我正在寫一個基於物理學的遊戲,它具有行星與重力作用於各種物體如導彈。 (使用更先進的物理引擎)以不同的時間步長重現物理結果
對於主要的遊戲,我使用一個固定時間步的單一物理模擬。 這一切都很好,精美的作品。
這是問題所在。 我正在使用第二個物理模擬器以更大的時間步長爲了投射某些拋射路徑到未來。基本上是一個包含行星和其他靜態重力生成實體的平行宇宙 (因爲我正在實時運行這些投影模擬,所以它需要快速,因此需要更大的時間步長)。
它產生的結果稍有不同。
下面是每時步執行的基本代碼:
Vector2 force = GravityStrength/centerToCenterDist.LengthSquared()/Math.Sqrt(centerToCenterDist.LengthSquared()) * body1.Mass * body2.Mass * centerToCenterDist;
//GravityStrength is in addition to the Mass calculations
我的平行宇宙的時間步長是目前(5.0 *時間步長)。
我通過改變結果從而做出了嘗試,以修正結果不同:
force = (force * (timestep+1))
我的問題: 是否可以使用在不同的時間步複製在主仿真的結果並行模擬器?
我的數學不是很好,所以我很難考慮可能的解決方案。我猜這是不可能的,因爲涉及到非線性方程式。
如果是這樣,是否有相當準確的方法來獲得接近的結果?
我很害怕這個,謝謝! – 2012-03-01 03:20:16