3
目前我有一個迷你物理遊戲,它使用分離軸定理來進行碰撞檢測和響應,但是當我發現沒有太多關於碰撞檢測和響應的文檔時,我停下來了。使用SAT碰撞檢測與其他形狀碰撞後的物體速度。計算2D碰撞後的合成速度矢量
下面是我正在談論的兩個圖。
任何人都可以點我到正確的方向嗎?
碰撞後可以給出的所有信息是最小穿透向量。
編輯:發現了一些代碼網上說的這個非常相關的,但我不明白:
void CBody::ProcessCollision(CBody& xBody, const Vector& N, float t)
{
Vector D = m_xDisplacement - xBody.m_xDisplacement;
float n = D * N;
Vector Dn = N * n;
Vector Dt = D - Dn;
if (n > 0.0f) Dn = Vector(0, 0);
float dt = Dt * Dt;
float CoF = s_fFriction;
if (dt < s_fGlue*s_fGlue) CoF = 1.01f;
D = -(1.0f + s_fRestitution) * Dn - (CoF) * Dt;
float m0 = GetInvMass();
float m1 = xBody.GetInvMass();
float m = m0 + m1;
float r0 = m0/m;
float r1 = m1/m;
m_xDisplacement += D * r0;
xBody.m_xDisplacement -= D * r1;
}
儘管這樣做會起作用,但由於您沒有選擇要翻轉哪個組件的原則,因此您的相同方法在所有情況下都不起作用。我想要創造的是剛體物理模擬。 – HDalton
具有完美的彈性或與現實世界的損失?有無摩擦?有很多選擇可以影響物理引擎的複雜性。我的例子只是最簡單的模型之一。我的建議是從一個非常簡單的模型開始,並在必要時使其更加複雜。 –