3

直線的に移動する2つの円の場合、衝突の時間を計算するのは簡単です。http: //twobitcoder.blogspot.com/2010/04/circle-collision-detection.html

これは、円の開始点と移動パスが固定されていることを前提としており、衝突の時間を計算します。

逆にそれを行うことは可能ですか?

円1:開始点X1、Y1速度VX1、VY1(固定開始点、固定直線移動経路)、半径R1円2:開始点X2、Y2速度スカラー(1m /秒など)(固定開始点、固定速度、方向不明)、半径R2

最小移動時間で2つの円の衝突位置を特定することは可能ですか?

IE Circle 1は0,0から始まり、速度1,0(1回あたり1ユニット右)で移動します。Circle2は5,5から始まり、1回あたり1ユニット移動できます。衝突位置(またはVX2、VY2)はどうなりますか。 2つの円が最低時間Tで衝突するためには、円2が移動する必要があります。両方の円の半径は1です。

この例では、解決策は、円1の周りのどこかで時間3のポイント3.0になります。未知の変数(衝突ポイント、衝突時間、VX2、VY2)があるため、質問はかなり複雑に感じます。VX2とVY2は|VX1| + |VX2|によって制約されますが =1。

質問の理由は、サークル1を「キャッチ」するためにサークル2に移動する場所を指示するためです。

強引な解決策は、すべての時間間隔で円1の位置を確認し、その点に移動するように指示された場合に円2が円1と衝突するかどうかを計算することですが、円の衝突点が高速で移動していることを見逃す可能性があります。次善のポイントなどを取得します。

4

1 に答える 1

3

これを簡単に解決するには、2つの鍵があります。

  • まず、x2時間内に到達可能なポイントはt、を中心とする円を形成しx2ます。
  • 第二に、円が触れることができる最初の瞬間は、接線方向に触れている必要があります。

これらを組み合わせて、点、、、接触点、およびがすべて同一線上にあることをx2(0)示しx2(T)ますx1(T)

これを示す図を描くと、tで単一の2次方程式が得られます。

|| x2(0) - x1(0) - v1 t ||^2 = (r1+r2+t)^2

これはtについて簡単に解くことができます。

方向を取得するには、方向v2の単位ベクトルを使用する必要がありますx1(T)-x2(0)

于 2011-09-19T01:51:31.703 に答える