2012-04-08 82 views
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

Beofre開始時間分配給時刻各點:第一點得到時間= 0,每下一個點得到時間[i + 1] =時間[i] +距離(i,i + 1)/速度。

然後,對於每個時間瞬間就可以以下面的方式計算位置:

  1. 查找第一點,對於該時間[I] < = CURRENT_TIME
  2. 查找精確位置:點[I] +( current_time-time [i])*(point [i + 1] -point [i])