繁体   English   中英

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

[英]Method to move an object from point(x1,y1) to point(x2,y2) at a given speed in a straight line in java

我必须编写一种方法,以给定的速度沿直线将对象(例如圆)从一个坐标移动到另一个坐标。 对象必须到达目标点并停止。 速度与物体到达该点所需的时间相关(例如,速度 = 15 相当于时间 = 15 毫秒)。 如果有人可以在这里帮助我计算数学,我会很高兴,拜托。

从 p0 点匀速移动到 p1 点的插值公式为:

p(t) = p0*(1-t) + p1*t

其中t是已缩放为从开始时的 0 到结束时的 1 的时间,并且pp0p1是 (x,y) 坐标对。 由于 Java 没有编写插值公式的内置方法,因此您只需将其并行应用于 x 和 y 分量。 结果是:

t = (time_now - start_time) / total_time;
x = x0*(1-t) + x1*t;
y = y0*(1-t) * y1*t;

这是核心计算。 要使对象移动,请执行以下步骤:

  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()确定的常规挂钟时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM