我有两点和一次,我如何找出向量?

I have two points and a time, how do i find out the vector?

我正在使用快板来..画线。 在线上的某个点,选择一个角度并从该点绘制一条新线,其长度为原始长度的一小部分。 Allegro 使用矢量系统来移动点,即我将有一个矢量 crtSpeed(0, -60),它将图像更新为 Y 轴上 60 像素的距离。我能够通过一些基本的触发计算出直线的终点。

所以基本上,我有两点,以及在两点之间旅行所需的时间。我不知道如何将该信息转化为适用的载体。 举个例子,我有几点 开始(400、300)和结束(600、200)。假设它有 10 秒的时间来画这条线——如何推导出使这条线发生所需的 crtSpeed 向量?

你得到:

  • 起点和终点坐标(x 和 y,像素单位)
  • 帧率(frames/second 的单位)
  • 持续时间(以秒为单位)

你想要:

  • 一个速度矢量(单位pixels/frame)

首先你需要你的 Δx 和 Δy(我用类 C 的伪代码写这个):

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

您想在持续时间内走完这段距离。也就是说,您想以 ∆x/duration pixels/second 移动。但是你想要 pixels/frame,所以你除以帧率 (1/(frames/second) = seconds/frame, pixels/second * seconds/frame = pixels/frame) .

xSpeed = dx/duration/framerate
ySpeed = dy/duration/framerate