У меня есть две точки и время, как мне узнать вектор?

Я использую аллегро, чтобы... рисовать линии. В какой-то точке на линии выбирается угол, и из этой точки проводится новая линия на долю исходной длины. Allegro использует векторную систему для перемещения точек, т.е. у меня будет вектор crtSpeed(0, -60), который обновляет изображение на расстоянии 60 пикселей по оси Y. Я могу определить конечную точку линии, выполняя некоторые базовые триггеры.

Итак, в основном у меня есть две точки и время, необходимое для перемещения между двумя точками. Я не знаю, как превратить эту информацию в применимый вектор. Чтобы нарисовать пример, у меня есть точки start (400, 300) и end (600, 200). Допустим, у нас есть десять секунд, чтобы нарисовать эту линию. Как получить вектор crtSpeed, необходимый для создания этой линии?


person asharkdoctor    schedule 21.02.2016    source источник
comment
какая у тебя частота кадров?   -  person WolfLink    schedule 21.02.2016
comment
ах, в настоящее время 30, хотя можно изменить в основном. Имеет ли значение частота кадров в этом контексте?   -  person asharkdoctor    schedule 21.02.2016
comment
Да, это так. Это необходимо для преобразования единиц измерения. Смотрите мой ответ; Надеюсь, поможет.   -  person WolfLink    schedule 21.02.2016
comment
Если вы не обрабатываете частоту кадров, когда вы делаете обновления. По сути, убедитесь, что вы знаете, в каких единицах вы ожидаете, что вектор будет. Это пиксели в секунду или пиксели в кадре? Из того, что вы описываете, я угадал пиксели/кадр.   -  person WolfLink    schedule 21.02.2016


Ответы (1)


Тебе дали:

  • начальные и конечные координаты (x и y, единицы пикселей)
  • частота кадров (единицы кадров в секунду)
  • продолжительность (единицы секунд)

Ты хочешь:

  • Вектор скорости (единицы пикселей/кадр)

Сначала вам нужны ваши ∆x и ∆y (я пишу это в C-подобном псевдокоде):

dx = end.x - start.x
dy = end.y - start.y

Вы хотите преодолеть это расстояние за время. То есть вы хотите двигаться со скоростью ∆x/длительность пикселей в секунду. Но вам нужны пиксели/кадр, поэтому вы делите на частоту кадров (1/(кадров/секунду) = секунды/кадр, пиксели/секунду * секунды/кадр = пиксели/кадр).

xSpeed = dx/duration/framerate
ySpeed = dy/duration/framerate
person WolfLink    schedule 21.02.2016