この単純な衝突ソルバーでオブジェクトが貫通するのはなぜですか?
以下のコードは、ここの Microsoft XNAサンプルからのものです。これは非常に単純なリジッドボディシミュレーションであり、多くの物理的効果(角運動量など)を無視しますが、オブジェクト(球)を押しのけて、互いに貫通しないようにします。 ただし、シミュレーションでは球体が貫通するだけでなく、多数の球体が相互に積み重ねられている場合、小さな球体が大きな球体の内側にほぼ完全に収まります。すべての球が同じ半径と質量を持つようにすると、シミュレーションは適度に実行されます(最小の相互浸透で)。 誰かが相互浸透がある理由を説明できますか?球の位置を移動させるので、相互侵入は不可能のようです。 シミュレーションの各球について、このメソッドは他のすべての球で呼び出されます。 /// <summary> // Given 2 spheres with velocity, mass and size, evaluate whether // a collision occured, and if so, excatly where, and move sphere 2 // at the contact point with sphere 1, and generate new velocities. /// </summary> private void SphereCollisionImplicit(Sphere sphere1, …