posts - 225, comments - 62, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

转动惯量(moment of inertia)

Posted on 2012-01-09 14:20 魔のkyo 阅读(3190) 评论(0)  编辑 收藏 引用

在空间直角坐标系中,计算对某个坐标轴的转动惯量公式:

Jxx = ∫rx2dm , Jxx表示绕x轴的转动惯量,rx为质量元到x轴的距离

Jyy = ∫ry2dm

Jzz = ∫rz 2dm’

平行轴定理:J=J0+md2

转动惯量张量(inertia tensor):

J =

clip_image002

主对角线上为三个坐标轴的转动惯量,剩下的项称为惯性积(product of inertia):

Jxy = Jyx = ∫(xy)dm

Jyz = Jzy = ∫(yz)dm

Jzx = Jxz = ∫(zx)dm

惯性积也有类似平行轴定理的坐标轴转换公式:

Jxy = Io(xy)+mdxdy

Jyz = Io(yz)+mdydz

Jzx = Io(zx)+mdzdx

惯性积可能是正值也可能是负值,对于轴对称物体,如果选择对称轴为主轴,按照惯性积的定义,与对称轴有关的惯性积都为零。这极大地简化了惯性张量的计算,所以在物理模拟计算中一般就选取物体自身对称轴来生成local坐标系下的转动惯量张量。

由 T = Jβ ,T为扭矩,β为角加速度

两边乘以 J-1 得, J-1 T = β

由此可以通过扭矩得到角加速度。

但一般扭矩T的表示是在world坐标系下的,而前面说了惯量张量J的表示是在local坐标系下的,为了得到world坐标系下的β,我们可以先把扭矩变换到local坐标系,再用J-1 左乘之得到local坐标系下的角加速度,再将之变换到world坐标系下,即:

β = M J-1 M-1 T ,M为物体的worldTransform,事实上角加速度和物体的空间位置显然没有关系,所以其实M只需要表示出参照系的轴向即可,或者说只需要transform的旋转部分即可。

有了角加速度,我们便可以在物理模拟程序中计算出角速度在当前帧的增量

Δω = βΔt ,Δt为一帧的耗时。

只有注册用户登录后才能发表评论。