Имитация движения в 2D - PullRequest
2 голосов
/ 05 ноября 2011

Мне нужна помощь в симуляции движения между двумя точками в самолете.Рассмотрим две точки P1: (x, y1) и P2: (x2, y2) .Я вычисляю расстояние между P1 и P2, скажем D , и выбираю случайную скорость, скажем V .Затем я вычисляю время, необходимое для перехода от P1 к P2, скажем T .Наконец, я вычисляю уравнение прямой линии между P1 и P2 как y = mx + b.

Например, пусть T = 10 секунд.В течение первых 9 секунд я хотел бы генерировать точки в секунду на прямой линии, пока не достигну точки P2 на 10-й секунде.Не могли бы вы помочь мне в этом.

1 Ответ

4 голосов
/ 05 ноября 2011

Лучший подход - использовать параметрические уравнения

x = x1 + t*(x2 - x1)
y = y1 + t*(y2 - y1)

где t - параметр времени, изменяющийся от 0 до 1 (0,5 означает, например, наполовину).

Если вам также нравится, что ваше движение "мягкое" (начиная с нулевой скорости, затем ускоряется, затем замедляется и останавливается в точке прибытия), вы можете использовать это измененное уравнение

w = 3*t*t - 2*t*t*t
x = x1 + w*(x2 - x1)
y = y1 + w*(y2 - y1)

Ниже приведен график кривой w по сравнению с линейным распределением t с 11 точками (t = 0,0, 0,1, ... 0,9, 1,0):

enter image description here

...