慣性テンソル#
慣性テンソル I は次のような対称行列である。
I=IxxIyxIzxIxyIyyIzyIxzIyzIzz=∫ρdVy2+z2−xy−xz−xyz2+x2−yz−xz−yzx2+y2対角項を慣性モーメント、非対角項を慣性乗積という。
対称行列なので、ある直交行列 O で対角化をすれば慣性乗積をすべて0にできる。
対角化された慣性テンソル II は
II=O−1IO=I1000I2000I3対角成分を主慣性モーメント、それが成立する座標系を慣性主軸という。
回転対称性のない一般の剛体の場合、慣性主軸を求めることは固有値問題に帰着する。
Iω=λω上式を満たす ω の方向は、行列 I の固有ベクトルの方向と一致する。
固有値 λi と固有ベクトル ωi より
I1I2I3O=λ1λ2λ3=(∥ω0∥ω0∥ω1∥ω1∥ω2∥ω2)主慣性モーメント Ii は、それに対応する慣性主軸(Ii に対応する固有ベクトル ωi の方向) の周りの慣性モーメントである。
回転対称性のある剛体は慣性テンソルが対角行列になっているので直交行列 O は単位行列。
cf. 色々な物体の慣性モーメント1
座標系#
座標系は [慣性主軸] → [ローカル座標] → [ワールド座標] とする。
角運動量 L と角速度 ω の関係式より
慣性主軸
LI=IIωI=(O−1IO)ωIローカル座標
LlocalOLI=Ilocalωlocal=OIIωI=(OIIO−1)OωI=IOωIワールド座標
LworldRLlocal=Iworldωworld=RIlocalωlocal=(RIlocalR−1)Rωlocal=(R(OIIO−1)R−1)Rωlocal=(RIR−1)Rωlocal
力の適用#
剛体の重心へ作用し必要に応じて何度でも適用する。
並進運動#
パラメータx∈R3v∈R3m∈RF∈R3J∈R3Δt∈R解説位置速度質量力力積タイムステップ力を適用する場合#
vt+1=vt+mFΔt力積を適用する場合#
vt+1=vt+mJ撃力は運動量 p(t)=mv(t) を用いて
∫tt+Δtdtdp(t)dt[p(t)]tt+ΔtChangeinmomentummΔv=∫tt+ΔtF(t)dt≃F(t)Δt≃impulseF(t)Δt
回転運動#
パラメータqr∈H1I∈R3×3Iworld∈R3×3ω∈R3L∈R3τ∈R3H∈R3Δt∈R解説剛体の回転慣性テンソル慣性テンソル角速度角運動量トルク力積タイムステップトルクを適用する場合#
RtIworldIworld−1LtLt+1ωt+1=(qrt) as matrix=RtIRt−1=RtI−1Rt−1=Iworldωt=Lt+τtΔt=Iworld−1Lt+1力積を適用する場合#
RtIworldIworld−1LtLt+1ωt+1=(qrt) as matrix=RtIRt−1=RtI−1Rt−1=Iworldωt=Lt+Ht=Iworld−1Lt+1撃力は角運動量 L を用いて
∫tt+ΔtdtdL(t)dt[L(t)]tt+ΔtChangeinmomentumΔL=∫tt+Δtτ(t)dt≃τ(t)Δt≃impulseτ(t)Δtまたは
∫tt+ΔtdtdL(t)dt[L(t)]tt+ΔtChangeinmomentumΔL=r×∫tt+ΔtF(t)dt≃r×F(t)Δt≃impulser×F(t)Δt
合成運動#
剛体上のある位置へ力や撃力を適用する場合について。
剛体の中心(重心)から剛体上のある位置 p へのベクトルを r=p −x とする。
力を適用する場合#
- 並進運動を行う
- τ=r×F として回転運動を行う
力積を適用する場合#
- 並進運動を行う
- H=r×J として回転運動を行う
最終的な速度や角速度を用い、位置や姿勢を更新する。
並進運動#
xt+1=xt+vt+1Δt回転運動#
qrt+1=∥qrt+qr˙t+1Δt∥qrt+qr˙t+1Δt四元数の時間微分について
q˙(t)=dtdq(t)=21{ωx(t)i+ωy(t)j+ωz(t)k}⊗q(t)オイラー法による時間積分
q(t+Δt)=∥q(t)+q˙(t)Δt∥q(t)+q˙(t)Δt大きさが安定しないので正規化が必須。
回転運動のパラメータについて#
対角化された慣性テンソルに着目する。
主慣性モーメントをベクトルとして扱えばストレージサイズが 1/3 となる。
それに伴い計算は四元数が主となる。
パラメータId∈R3qo∈H1qr∈H1解説主慣性モーメントO を四元数化R を四元数化ただし
Id−1≡I11I21I31トルクを適用する場合#
qtqt−1LtLt+1ωt+1=qrt⊗qot=qot−1⊗qrt−1=qt⋄(Id⊙(qt−1⋄ωt))=Lt+τtΔt=qt⋄(Id−1⊙(qt−1⋄Lt+1))力積を適用する場合#
qtqt−1LtLt+1ωt+1=qrt⊗qot=qot−1⊗qrt−1=qt⋄(Id⊙(qt−1⋄ωt))=Lt+Ht=qt⋄(Id−1⊙(qt−1⋄Lt+1))記号について#
記号⊙⊗⋄解説アダマール積四元数の積四元数によるベクトルの回転: p′=qpq−1