在java中以直线以给定速度将对象从点(x1,y1)移动到点(x2,y2)的方法

agn*_*nes 2 java

我必须编写一种方法,以一定的速度将一个物体(例如圆圈)从一个坐标移动到另一个坐标.对象必须到达目标点并停止.速度与物体到达该点所需的时间相关(速度= 15等于时间= 15毫秒).如果有人可以帮我解决这里的数学问题,我会很高兴.

Ted*_*opp 7

以恒定速度从点p0移动到点p1的插值公式为:

p(t) = p0*(1-t) + p1*t
Run Code Online (Sandbox Code Playgroud)

其中t是已缩放处从0开始在端部,以改变为1,时间p,p0以及p1是(x,y)坐标对.由于Java没有内置的方法来编写插值公式,因此您只需将其并行应用于x和y组件.结果是:

t = (time_now - start_time) / total_time;
x = x0*(1-t) + x1*t;
y = y0*(1-t) * y1*t;
Run Code Online (Sandbox Code Playgroud)

这是核心计算.要使对象移动,请按照以下步骤操作:

  1. [给定:start_time,total_time,x0,y0,x1,y1]
  2. 将圆放在(x0,y0)并设置time_now = start_time
  3. 直到time_now == start_time + total_time,使用上面的方法计算(x,y),将圆移动到(x,y),并增加time_now.

时间增量可以是由常规的挂钟时间确定的System.getTimeMillis().

  • ++你可能想在循环中放一点睡眠,或者把它从计时器事件中驱逐出去.同时使用> =进行时间比较,因为==可能会错过. (2认同)