我只是在處理一些東西,因爲我知道它比任何其他語言都好,並且偶然發現在這個網站上Custom 2d physics engine。到現在爲止還挺好。我在我有2個矩形碰撞的地步,我需要解決碰撞。根據論文我應該使用的代碼:試圖在java中使用C++創建一個物理引擎紀錄片
void ResolveCollision(Object A, Object B)
{
// Calculate relative velocity
Vec2 rv = B.velocity - A.velocity
// Calculate relative velocity in terms of the normal direction
float velAlongNormal = DotProduct(rv, normal)
// Do not resolve if velocities are separating
if(velAlongNormal > 0)
return;
// Calculate restitution
float e = min(A.restitution, B.restitution)
// Calculate impulse scalar
float j = -(1 + e) * velAlongNormal
j /= 1/A.mass + 1/B.mass
// Apply impulse
Vec2 impulse = j * normal
A.velocity -= 1/A.mass * impulse
B.velocity += 1/B.mass * impulse
}
這是用C++編寫的,所以我需要將它移植到java。在這裏,我陷入了兩件事。 1:作者用「正常」來表示什麼?我如何獲得「正常」?事情2是這3行代碼:
Vec2 impulse = j * normal
A.velocity -= 1/A.mass * impulse
B.velocity += 1/B.mass * impulse
他創建一個向量只有一個數字? j *正常嗎? 我真的沒有清楚地瞭解究竟發生了什麼事情,這對我沒有任何好處。
如果你不知道什麼是正常的矢量,這不是一個真正的編程問題:你應該對正在建模的數學做一些背景閱讀。 http://mathworld.wolfram.com/NormalVector.html –
正常在其他地方定義。搜索對象或任何'全局' – JFPicard
「自定義3D物理引擎」 - >您鏈接到一個名爲「如何創建自定義2D物理引擎」的頁面。 –