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は、各ポイントに時間モーメントを割り当て始めます。最初のポイントは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 に答える