以均匀的速度沿着一条路径移动

时间:2012-04-08 12:49:28

标签: algorithm path geometry pseudocode

我有一系列点,我有一个物体,应该沿着这些点所描述的路径移动。

我知道我需要根据时间找到相应的片段,但我不知道如何准确地做到这一点。

请注意,路径的速度应保持不变,因此您必须考虑段的距离。

2 个答案:

答案 0 :(得分:1)

这样的东西?要在特定时间查找细分,循环遍历所有细分,请添加细分的长度,直到达到目标时间。

public int findSegment(int [] segments, int time) {
   time_so_far = 0;
   int i = 0;
   while (time_so_far < time) {
     time_so_far += segments[i];
     i++;
   }
   return i-1;
}

如果段长度是距离,并且您考虑的速度不是1,那么您需要执行time_so_far += segments[i] / speed

答案 1 :(得分:1)

Beofre开始为每个点分配时刻:第一个点获得时间= 0,每个下一个点获得时间[i + 1] =时间[i] +距离(i,i + 1)/速度。

然后,每次都可以通过以下方式计算位置:

  1. 找到第一个点,时间[i]&lt; = current_time
  2. 找到确切位置:point [i] +(current_time-time [i])*(point [i + 1] -point [i])