На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Ввычисление траектории.
    У меня один объект движется по сцене, и натыкается на другой, причем их положение друг относительно друга неизвестно. Нужно добиться эффекта плавного "обплывания" движущегося объекта вокруг неподвижного... Если до завтра я этого не сделаю, то крыша у меня съедет окончательно. Заранее спасибо.

      А что известно-то тогда, если нету данных о взаимном расположении в данный момент?
        В данный момент известно. Если вы знакомы с Flash, то могу описать подробнее. Один мувик плывет по сцене, у него на пути может возникнуть другой. Так вот нужно чтобы первый обплыл второй, не касаясь его. Координаты в текущий момент времени известны, координаты неподвижного объекта тоже. Вот такие дела. :)
          Подплываем на максимально близкое расстояние, затем прикидываем окружность вокруг обплываемого мувика необходимого радиуса в центре мувика и плывем по окружности до тех пор, пока не вернемся на начальный y (игрек). Тогда плывем дальше. Вычислить координату y для окружности с известной формулой - просто. Имхо так. Правда это не шибко плавно - будет маленький изломик, когда перейдет на окружность.
            а можно и по параболе... :-)
              у тебя мувик движется программно или motion?
              тебе еще нужно придумать с какой стороны обходить не подвижный мувик, вернее, по часовой или против
              Если motion, то не понятно куда и как бедет двигаться мувик
              после изменения _x и _y в текущем кадре.

              Вообще измеряй расстояние между мувиками, при загрузке
              очередного фрейма движущегося мувика и пересчитывай координаты
              примерно так:
              ExpandedWrap disabled
                <br>onLoadFrame() // привязываешь к движущемуся мувику<br>{<br>r = Math.sqrt((_x - x_st)^2 + (_y - y_st)^2);<br>// Дальше, если расстояние меньше некоторого, то изменяй _x, _y<br>// чтоб потом вернуться на траекторию, нужно запоминать сумарное смещение<br>// если необходимо плавно, то dr постепенно увеличиваем с приближением<br>if(r < r_min) {_x += dr; _y += dr; sum += dr; dr++;}<br>// если расстояние больше некоторого и суммарное смещение от траектории <br>// не равно нулю, то возвращаемся на траекторию<br>if(r > r_min)<br>  if(sum != 0) {_x -= dr; _y -= dr; sum -= dr; dr--;}<br>}<br>

              r - расстояние между мувиками
              x_st, y_st - координаты неподвижного мувика
              r_min - минимальное расстояние при котором начинает изменяться траектория
              sum - сумарное смещение от траектории
              dr - приращение координат

              sum нужно сбрасывать в ноль перед каждым столкновением
              dr задаешь (1 или -1) в зависимости от направления движения (возможно его придется заменить на dx и dy соответственно)
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0437 ]   [ 14 queries used ]   [ Generated: 3.07.25, 02:43 GMT ]