2

離散時間では、位置が数値法によって決定される 2 つのボールがあります。

衝突のテストは (d < r1 + r2) だけです。これが最初のステップです。2 番目のステップは、衝突が発生したときの法線ベクトルを取得し、適切な衝突応答を適用できるように、衝突の影響の時間を決定することです 計算を簡素化するためのある種の近似が好きですか?

2ドットだけなら簡単ですが、ボールには半径があります。それらが衝突した正確な時間を見つけるために、時間をさかのぼって線形補間する必要があります。

現在の時間ステップでのボールの位置と速度を知っています

タイムステップが十分に小さい場合、線形近似を使用して前の位置を取得し、それを使用して衝突ポイントを取得して、適切な衝突応答を与えることができます

衝突の時間 (d = r1 + r2) が満たされるとき、この方程式を展開すると、次のようになります。

(P1 - tV1) - (P2 - tV2) = N (r1 + r2)、P はボールの中心位置、V は速度、N はボール 1 からボール 2 を指す法線ベクトルです。

(P1 - P2) - t (V1 - V2) = N(r1 + r2)

両側の内積による N を取り除くことができますが、これをすべての正方形などと分離するのは非常に困難です。

(Px , Py) = P1 - P2、V についても同じで、両側でドット積を実行します。

(Px - tVx)^2 + (Px - tVx)^2 = (r1 + r2)^2 を取得します。t を解くには、展開する必要があります。

Px^2 + Py^2 - t(2Vx + 2Vy) + t^2(Vx^2 + Vy^2) = (r1 + r2)^2

t^2(Vx^2 + Vy^2) - t(2Vx + 2Vy) + (Px^2 + Py^2 - (r1 + r2)^2) = 0

これは at^2 + bt + c = 0 の 2 次ソルバーで解くことができ、t がステップ サイズよりも小さいことがわかっています。

しかし、これは非常に複雑な解決策です。この問題を解決する簡単な方法はありませんか?

4

1 に答える 1

1

各時間ステップで球体に加速度が適用されない場合 (時間ステップが小さい場合は妥当)、例: t_start で d = r1+r2+A、t_end で d = r1+r2-B の場合、衝突が発生しました。 A/(B+A) タイムステップ全体。

この衝突の座標は、速度ベクトル V1 と V2 から簡単に計算できます。

于 2013-04-18T13:14:27.787 に答える