2012-09-24 99 views
1

我正在學習基本碰撞檢測。如何使用後驗(離散)方法避免碰撞

使用後驗(離散)方法進行碰撞檢測。假設最簡單的情況是2D中的兩個圓,質量相同,大小相同,並假設彈性碰撞,並假設它們正在x軸上移動並朝向彼此移動。

現在先進一步模擬一次。

現在假設圓圈現在正在相撞,其中一個圓圈已經進入另一個圓圈。這是通過檢查它們的中心之間的距離小於2 * r來找到的,其中r是半徑)。

現在速度根據標準方程進行調整,並且模擬向前推進一個時間步並調整位置。在這種情況下,速度會翻轉方向,圓圈將開始遠離彼此。

問題是,如果模擬時間步長太小或者物體移動速度太慢,那麼可能兩個圓圈在下一步仍然會發生碰撞,因爲它們還沒有完全移出對方。

因此,在下一個時間步驟中,圓圈再次被發現碰撞,並且速度再次被調整,但是現在它們會向後翻轉,因此圓圈將開始移回彼此。

在下一個時間步驟中,再次檢測到碰撞,並調整速度,並且圓圈現在將彼此遠離。

重複此過程,圓圈將保持相互碰撞,無法完全離開對方。

我相信這是posteriori方法的一個已知問題。解決這種情況的最佳方法是什麼?

回答

0

標準解決方案是在檢測到碰撞時移開物體。計算重疊量並將每個物體從另一個物體移開距離的一半。如果你想要的話,你甚至可以考慮物體的質量(較重的物體移動較少)。希望這可以幫助。