車両の予測軌道?


8

私が開発しているゲームでは、この例では速度Vで北上している車両(1)が目標(2)に到達できるかどうかを計算する必要があります。例は上から問題を描写しています:

ここに画像の説明を入力してください

実際には2つのシナリオが考えられます。Vが一定である(結果として軌道4、円弧)、または車両に加速/減速する能力がある(軌道3、らせん弧)。

車両が(行き過ぎるのではなく)目標に到達できるかどうかを簡単に確認できる方法があるかどうか知りたい。私が考えることができる唯一のことは、時間の経過に伴う車両の位置を統合することなので、私は特に軌道#3に興味があります。

編集:もちろん、車両には常に操縦する能力がありますが、操縦半径はその速度に応じて変化します(最大横g力と考えてください)。

EDIT2:(実生活のほとんどの車両と同様に)ゲーム内のものにも最小ステアリング半径があることにも注意してください)。

回答:


15

速度を変えることができる場合(したがって、操舵角を変えることができます)、エンティティが小さな円で回転をほぼ停止している縮退したものから、ターゲットを指すまで、常に解決策を見つけます。

速度を変えることができない場合は、より優れた操舵を使用しても到達できない到達できない領域または影について考えることができます。ターゲットがそれらの領域にある場合、到達できません(「オーバーシュート」しない限り、それらを超えて、影の領域からそれらを置きます)。

あなたの最高の操縦では、円弧を左/右に曲がることができ、完全な円周を描くことができます:

影

あなたが見ることができるように、2つの円の1つに何が入っているかは直接到達できません。

曲率半径rの曲線上をステアリングする質量mの物体は、物体の慣性動作によって引き起こされる半径方向の見かけの遠心力を経験します。

Fc = mV ^ 2 / r

ここで、Vは物体の速度(速度ベクトルの長さ)です。力による身体の加速であること:

a = F / m

私たちの加速は:

a = V ^ 2 / r

amが最大加速度であるとすると、次のようになります。

rm = V ^ 2 / am

ここで、rmは最大加速度を使用した最小半径です。

速度Vで動くPのベシクルがTのターゲットに到達できるかどうかをテストする場合は、次のことを行う必要があります。

1)C1C2を次のように計算します。

c1およびc2

2)PのC1およびC2からの最小距離を次のようにテストします。

半径テスト

dがrmより大きい場合、これはTが両方の影の外側にあり、ビークルが到達できることを意味します。ビークルは単にステア制約の下でステアを調整します。(より正確には、TPの間の距離の関数を単調減少させる制約の下でパスがあります)

[更新]

速度を変更できる場合は、常にPからTに向かう弧(速度/半径方向の加速の組み合わせ)を取得できます。これは、半径が本当に自由度になるため可能です。

これは可能な構造です:

ターゲットパス

黒い線は、円の中心が置かれる可能性がある軸です。それは、車両の現在のフェーシングに垂直であり、その回転の中心を通過します。

緑のセグメントは、車両の中心とターゲットを接続し、その距離の中央を通る線に垂直な線を表します。

緑の線は、希望する円弧の中心で正確に黒の線と交差します。オレンジ色のセグメントの長さは、速度を調整して最大操舵で回転するか、速度と操舵の両方を制御して拘束下に留まることによって達成できる回転半径を示します


この詳細な回答(+1)を作成していただきありがとうございます。少し「勉強」する必要がありますが、最初の読みから、最初のステートメント「あなたは常に解決策を見つけるでしょう...」は必ずしも真実ではないようです:最小ステアリング半径の存在は常にそこにあることを意味します制限はターゲットの周りの一種の「軌道」を定義する「シャドウエリア」になります...それとも私は間違っていますか?[V = kの計算が簡単なので、これは本当に私にとって本当の問題です...]
mac

@macターゲットが車両の同じ場所にない場合は、速度を落として、rminがターゲットを含まないほど小さい円を生成するようにすることができます。この状態のときに速度を設定して、ターゲットが正確に円周上にくるようにできます!
FxIII

@Fxill-繰り返しになりますが、更新していただきありがとうございます。できれば、献身のために2つ目の+1を差し上げます。:)それでも、私はあなたの説明から、加速と初速度の両方をどのように説明するか理解できません:問題全体は、時間とともに速度が変化するという事実に依存します(スパイラルの弧)。車両が十分に減速したり、ターゲットを迎撃するのに十分な半径を取得したりするだけの十分なスペースがない可能性があるという印象を受けています...または、私は間違っていますか?
Mac

@macはam = 1、次にrm = v ^ 2と言います。d = | PT |の場合 > 0の場合、v ^ 2 <d / 2を選択できます。d = 0の場合、それはP = Tであることを意味するので、すでに目標に達しています...
FxIII

ははは間違いなく動作すること間違いなし!:D
FxIII
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.