2012-01-23 5 views
1

弾道弾道で3dを導くターゲットのための先導式があるかどうか疑問に思っていました。もしそうでなければ、2dターゲット先導式を次のように変換することが可能かどうか疑問に思っていました。 3dは、ターゲットの動きに沿っている平面を整列させることによって、数式を導く?3D Target弾道弾道の先導式

+1

ターゲットの主要な数式ではどういう意味ですか?あなたはもっと具体的な例を挙げることができますか? – propaganda

+0

私はあなたが念頭に置いている正確な2次元式をより良く説明する必要があると思います。 – kkm

+0

おそらく同じ人:http://www.wiremod.com/forum/expression-2-discussion-help/28444-target-leading-help-math-hurts-my-brain.html – propaganda

答えて

2

発射砲が発射された時点で発射することは容易に可能ですが、発射砲が空中にある間は発進、加速、または減速しないという保証はありません。いずれにしても、ターゲットを誘導しているときは、ターゲットの速度が同じであると仮定しても、加速している場合でも、加速は同じままになります。

ここはblog postです。時間をかけて移動距離を予測し、加速を考慮して書きました。そして、私が使用するコードはここにあります。

これは一定の加速を与えられた時間の経過とともに移動距離を計算します。この場合、constantAccelは速度です。ターゲットが加速していない場合は、そのパラメータには0.0fを使用します。

Vector3 targetsVelocity(3.0f, 0.0f, 3.0f); 
float targetsAcceleration = 1.0f; 

float distanceTraveled = CalcDistanceOverTime(targetsVelocity, targetsAcceleration, timeDelta) 

Vector3 finalPosition = targetsVelocity * distanceTraveled; 

あなたはこの式に渡すtimeDeltaが必要となりますことに気づくことがあります。

float CalcDistanceOverTime(const float initVelocity, 
          const float constantAccel, 
          const float timeDelta) 
{ 
    return (initVelocity * timeDelta) 
      + (0.5f * constantAccel * (timeDelta * timeDelta); 
} 

は、ここでの例です。これは、あなたの発射体の軌道と速度に基づいて、目標に到達するまでの時間を知る必要があることを意味しますが、それがどれくらいの時間を要するかは正確には分かりませんあなたはそれがどこになるかを知っています。私はこれについての正確な公式は分かりませんが、あなたの発射体の速度と速度、そしてあなたの目標の速度と速度に基づいて計算できるCalculusを使用すると信じています。これらの2つが衝突する可能性のある空間内の点を見つけることができます。

上記の方法が実現できない場合、あなたの発射物があなたが望むどんな角度および速度でも行くことができるならば、固定されたtimeDeltaを選ぶことができるかもしれません。例えば、あなたのtimeDeltaとして3秒を選んで、3秒間にターゲットがどこにあるかを知っていて、直ちに3秒以内にそのポイントに達することが分かっている発射体を発射します。

ちょうどその場合、弾道軌道を3Dで計算することについてはblog postです。この方法で目標とする時間を計算するには、出力する垂直速度と位置に基づいて単純にする必要があります。重力を使用して、その位置が目標位置の仰角に達するまでの秒数を計算するだけです。

+0

ぐらい加速したほうが速いですね... – ILOVEPIE

+0

0.5f * 5 * 1秒= 2.5、 0.5f * 10 * 1秒= 5 問題は表示されません –

関連する問題