看到cyclone-physics
用下面的方式算出w(角速度)
I = R * I' * R-1
τ =I α
w = w + αΔt
I'是Local space 的轉動慣量
(它是一個矩陣)
R 是物件當下的旋轉矩陣(用來變換到Global space)
R-1是旋轉矩陣的逆(用來變換到Local space)
--------------
在 Global space
旋轉中的物體,每個frame的 I 都在變
但在Local space
I' 是固定的
類似衝量
F Δt = ΔP = Δ (m V) = m ΔV
有
τ * Δt = ΔL = Δ (I w) = I Δw
( τ = R X F )
L'為Local space的角動量
τ為Local space的力矩
τ' Δt = ΔL'
τ' = ΔL' / Δt
τ' = Δ(I'w') / Δt
τ' = I'Δ(w') / Δt
τ' = I' α'
(類似 F = m a )
--------------
上面提到 τ' = I' α'
(R-1 * τ) = I' * (R-1 * α)
R * (R-1 * τ) = R * I' * (R-1* α)
τ = R * I' * R-1 * α
τ = I * α
就得到了Global space 的轉動慣量
I = R * I' * R-1
--------------
使用
τ = I α
w = w + αΔt
如果τ = | 0,0,0 |T,α 也會是 | 0,0,0 |T
那麼 w就不會改變
如果改用
L= L+ΔL
L = I w
只要有初始動量,就算之後ΔL =
| 0,0,0 |T,w還是會不停的改變
備註: