3

私はゲームサーバーのユニット軌道の開発を開始しましたが、今のところ、特定の時間におけるユニットの位置を取得しようとしています。軌道が直線の場合は簡単ですが、ユニットが別のユニットを追いかける場合ははるかに複雑になります。

問題を説明するためにフラッシュアプ​​リを作成しました。黒の軌跡は、一方向に移動するユニット用です。青は黒を追いかけ、赤は青を追いかけます。私が欲しいのは、青と赤の軌道全体を事前に計算して、一定時間内にそれらの位置を取得できるようにすることです。

出来ますか?助けてくれてありがとう!

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

4

2 に答える 2

2

Carl E. Mungan によって物理学の観点から解決された古典的な追跡問題は、チェイサーが追跡されたオブジェクトの軌道に対して最初は垂直である特定のバージョンを解決しますその垂直性は軌道の残りの部分に沿って消えるため、これはソリューションの不可欠な要素であると思います。

これは、時間が方程式の係数や項に明示的に現れないという意味で、微分方程式の自律システムです。これは、この論文で与えられた一連の解が非垂直な初期条件を提供するのに十分一般的であるという考えを支持します。

この論文は、さらなるリンクと参考文献、および有用な検索用語「追跡曲線」を提供しています。


Mungan の初期条件とは少し異なる、もう少し一般的な初期条件を述べましょう。追跡対象のオブジェクト (「船」) が最初に原点に位置し、正の y 軸 (x=0) を一定の速度 V で移動するとします。追跡対象のオブジェクト (「魚雷」) は最初 (x0,y0) に配置されます。 、そして瞬間的に「船」に直接向きを変えますが、一定の速度vで移動します.

x0 がゼロである特殊なケースでは、y0 が正または負であるため、線形追跡曲線、つまり正面衝突または後続追跡が発生します。そうでなければ、y 軸の反射によって、一般性を失うことなく x0 > 0 と仮定することができます。したがって、x 座標の有理数は明確に定義されます。

当面の目的のために、速度 V,v が等しくないため、比率 r = V/v は 1 ではないと仮定します。以下は、Mungan の方程式 (10) に似た「魚雷」曲線の閉じた形式の解 (1) です。

                     (1+r)          (1-r)
              [ (x/H)          (x/H)      ]
(y/H) = (1/2) [ -----      -   -----      ]  +  C    (1)
              [ (1+r)          (1-r)      ]

ここで、定数 H、C は初期条件によって決定できます。

最初に魚雷が原点にある船の位置に向かって移動するという条件を適用して、(1) の x に関する微分を取り、両側から係数 1/H をキャンセルします。

                     r        -r
dy/dx = (1/2) [ (x/H)  - (x/H)   ]                   (2)

ここで、始点 (x0,y0) での曲線の勾配 dy/dx を、原点を通る直線の勾配と等しくします。

      r         -r
(x0/H)  - (x0/H)   = 2y0/x0 = K                      (3)

これは、正のB = (x0/H)^rの二次方程式になります。

B^2 - K*B - 1 = 0                                    (4)

つまり、B = [K + sqrt(K^2 + 4)]/2 (ただし、K < 0 の場合は、キャンセル エラーを回避するために別の形式を使用します)、これにより、x0 と r の知識から H を決定できます。

H = x0/(B^(1/r))                                     (5)

H を知っていれば、(1) の加法定数 C を、そこに初期点 (x0,y0) を代入することで簡単に求めることができます。


トリッキーな部分は、「魚雷」軌道上のどの点が特定の時間 t > 0 に対応するかを判断することです。その問題の逆はかなり簡単に解決されます。軌道上の点が与えられたら、微分式 (2) を使用してその点での接線を見つけ、その線の y 切片 b から (つまり、現在の「船」の位置から) 時間 t を推定します。

t = b/V                                              (6)

したがって、(x(t),y(t)) を特定の時間 t > 0 で「魚雷」がどこにあるかを決定することは、基本的に根を見つける作業です。t1 < t < t2 となるように、時間 t1 と t2 に対応する 2 つの x 座標 x1 と x2 の間で目的の x(t) を簡単に囲みます。求根法を使用して、目的の精度が達成されるまでこの間隔を調整できます。かなり小さな間隔が改善されると、ニュートン法は急速な収束を提供します。このような手順の詳細については、次回の記事で説明します。

于 2011-08-18T17:23:44.913 に答える
1

問題を設定することはできますが、解決することはできません。

黒い曲線は一定の速度 v0 で直線的に移動しています。

青い曲線は一定の速度 v1 で黒の方向に移動します。

簡単にするために、時間 t=0 で黒い曲線が (x=0, y=0) から始まり、x 方向に移動するように座標を選択します。

したがって、時間 t >= 0 では、黒い曲線の位置は (v0 t, 0) です。

問題文

目標は、初期位置 (x(t=0), y(t=0)) が与えられた時点 t >= 0 の青い曲線の x、y を見つけることです。運動の微分方程式は

dx / dt = v1 (v0 t - x) / a(t)

dy / dt = v1 (- y) / a(t)

ここで、a(t) = sqrt((v0 t - x)^2 + (y^2)) は、時間 t における青と黒の間の距離です。

これは、2 つの非線形結合微分方程式のシステムです。完全な分析ソリューションはないようです。Wolfram Alphaは入力を試行せずにあきらめます

D[y[t],t] = -y[t] / sqrt[(t-x[t])^2 + y[t]^2], D[x[t],t] = (t-x[t]) / sqrt[(t-x[t])^2 + y[t]^2]

math.stackexchangeで質問してみてください。幸運を!

于 2011-08-18T14:42:54.133 に答える