我有两点和一点时间,我如何找到向量?

时间:2016-02-21 03:14:50

标签: c++ math vector trigonometry allegro5

我正在使用allegro来绘制线条。 在该线上的某个点处,选择一个角度,并从该点绘制一条新线,以获得原始长度的一小部分。 Allegro使用矢量系统来移动点,即我将有一个向量crtSpeed(0,-60),它将图像更新为Y上的60像素距离。我能够找出行做一些基本触发的终点。

所以基本上,我有两点,并且需要花费一定的时间在两点之间旅行。我不知道如何将该信息转换为适用的矢量。 举一个例子,我有点 开始(400,300)和结束(600,200)。让我们说这条线有十秒的时间 - 如何得到使该线发生所需的crtSpeed向量?

1 个答案:

答案 0 :(得分:0)

你得到了:

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

你想:

  • 速度矢量(像素/帧的单位)

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

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

您希望在整个持续时间内覆盖此距离。也就是说,您希望以Δx/持续时间像素/秒移动。但你想要像素/帧,所以你除以帧率(1 /(帧/秒)=秒/帧,像素/秒*秒/帧=像素/帧)。

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