0

こんにちは、半径を回る車両をシミュレートしようとしています。これは私が現在していることです

  1. ターンの半径を計算します。
  2. 加速度を計算し、速度に追加します。
  3. 速度の大きさを使用して、1 回の更新で移動した距離を決定します。
  4. arctan( distanceTraveled / turnRadius )回転角度を取得するために使用します。
  5. 車両角度を更新します。
  6. 車両の角度で速度を回転させます。例えばvelocity *= Quaternion.AngleAxis(angle, Vector3.up)
  7. 車両の位置を速度で更新します。

現在、ドリフトが多く、まっすぐ走れません。これを正しく実装する方法はありますか?

4

2 に答える 2

0
1. You want to calculate the radius of the turn, what do you know to calculate it?

2. You can calculate the acceleration by the formula: a = v²/r , here is v the velocity of the rotating object, r is the radius.

3. The distance is just the velocity times the time travelled.

4. The angle of rotation can be calculated by:

   the "travelled" angle per second = w = 2*pi*revelotions per second "n"
         w= 2*pi*n
w*t="travelled" angle = angle
angle = 2*pi*n*t

we also know that= v = 2*pi*r*n  n=v/(2*pi*r)
You can put that in the formulo for the angle in function of the velocity.

5. I think it is answerred in 4.

6. you have to use sin and cosine to calculate the components of the velocity on every axis. If you know what derivatives are you can use them to calculate the tangence line on the circle where the object moves on. The velocity is in the same direction of the tangence line.


Hope this helped
于 2012-12-27T17:34:41.543 に答える
0
1. Calculate the radius of the turn.
2. Calculate acceleration and add to velocity.
3. Use velocity magnitude to determine distance travelled in one update.

ここまでは順調ですね。

4. Use arctan( distanceTraveled / turnRadius ) to get the angle of rotation.

持続する。まず、これはステップ 2 と競合します。加速を使用してターンを生成しているか、円のジオメトリを使用してターンを強制しています。これらを混ぜようとすると、せいぜいドリフトが発生します。第 2 に、ここでは arctan を使用しないでください。単に angle=(distanceTraveled/radius) です。

5. Update vehicle angle.

方位と姿勢を別々に追跡していますか? つまり、車の横滑りをシミュレートできますか? それとも、車が進行方向を向いていると思いますか? 後者の場合、同じ情報の冗長コピーを保持しているため、バグが発生します。

6. Rotate velocity by vehicle angle. e.g. velocity *= Quaternion.AngleAxis(angle, Vector3.up).

ステップ 2 を正しく実行した場合、これはステップ 2 でカバーされているはずです。

7. Update vehicle position with velocity

合理的に聞こえます。

于 2012-12-23T10:21:25.203 に答える