PDA

Просмотр полной версии : Движение на точку с доп. функционалом


AlexCooper
25.02.2011, 00:08
Всем доброго время суток.
Вопрос следующего характера, хотел найти что-то более-менее похоже на то что хочу реализовать но то что знаю и то что нагуглил дают частичные функции реализации следующего.
Хочу описать функцию которая оперируя следующими параметрами

xs,ys - начальные координаты
xt,yt - конечные координаты
sr - начальное значение rotation
ks - ускорение
ms - максимальная скорость
ss - начальная скорость
tl -расстояние в пикселях по траектории движения до конечных координат с которых начинается обратное ускорение или же торможение до нуля

* в некоторых примерах обнаружил следующие
_x += (xt-_x)/speed;
_y += (xt-_y)/speed;
смотрится не плохо, потому думаю логичным будет включение в исчисление движения при достижении tl
arc - угол при повороте

А в результате функция должна переместить заданный клип из xs,ys в xt,yt с учётом tl и ускорением до максимальной скорости. Но налаживается следующие особенности траектории.
Если "нос" клипа устремлён в противоположную сторону от конечных точек, то клип должен сначало осуществить разворот, но не на месте, а выполнив сначало круговое движение и выровняв "нос" в конечную точку осуществить прямолинейное движение

*когда то описывал движение клипа относительно его rotation
_x += Math.cos(Math.PI/180*_rotation)*speed;
_y += Math.sin(Math.PI/180*_rotation)*speed;

Я не перекладываю своих тараканов на Ваши плечи, естественно сам буду пытаться сложить нужный алгоритм, это намного приятней чем использовать чей-то, но буду рад за любую полезную информацию.

Заранее благодарен.

Ниже приведу иллюстрацию примерных траекторий

Hauts
25.02.2011, 00:10
Почитайте это (http://coolisee.com/2010/04/27/upravlenie-povedeniyami-steering-behaviors-chast-1/), много интересного для себя найдете. Там три статьи. Очень похоже на вашу задачу "Шаг 8. Прибытие (arrive)".

А вообще думаю в подобной функции будет использоваться цикл с интегрированием Верле. То есть сначала прогоняем все будущие значения х и у для объекта и находим то его положение, при котором он начнет торможение. Потом сохраняем у объекта массив точек его пути и запускаем анимацию через интервал.

Как-то так, наверное. Было бы побольше времени, попробовал бы написать код :)

Еще есть вариант использовать этот пример (http://xitri.com/2008/07/09/flash-programming-drive-a-car.html), ваши схемы напоминают траекторию движения автомобиля (поворот до нужного направления и подъезжание). Там только управление на автоматическое поменять.

AlexCooper
25.02.2011, 00:35
Спасибо. Сейчас будем ознакомляться и пытаться всё сложить до кучи. Примеры хорошие, правда у меня не автомобильная а космическая тематика, потому более подойдёт первая ссылка, так как движение собираюсь производить по клику мыши, но обязательно изучу оба ресурсы.

+ в карму

Добавлено через 50 секунд
от не задача
Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его Hauts.