離散時間では、位置が数値法によって決定される 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 がステップ サイズよりも小さいことがわかっています。
しかし、これは非常に複雑な解決策です。この問題を解決する簡単な方法はありませんか?