0

我有一系列点,并且我有一个应该沿着这些点描述的路径移动的对象。

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

请注意,沿路径的速度应该是恒定的,因此您必须考虑路段的距离。

4

2 回答 2

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

于 2012-04-08T12:56:48.617 回答
1

Beofre start 为每个点分配时间点:第一个点得到 time=0,每个下一个点得到 time[i+1]=time[i]+distance(i,i+1)/velocity。

然后对于每个时刻,您可以通过以下方式计算位置:

  1. 找到第一个点,其中 time[i]<=current_time
  2. 查找准确位置:point[i]+(current_time-time[i])*(point[i+1]-point[i])
于 2012-04-08T12:59:20.987 回答