Angular velocity and Inertia Tensor help
Hello,
I''m trying to implement angular velocity and have some trouble understanding some concepts. I hope someone can help me out in this area.
Right now, I have a 20 x 20 x 20 cube with vertices only on the cube''s face. The vertices are evenly spaced. First, I need to calculate the Inertia Tensor. The moment of inertia for a box is ( I_xx, I_yy, I_zz ) = ( (1/12)m(a^2 + l^2), (1/12)m(b^2 + l^2), (1/12)m(a^2 + b^2) ) where m = mass of box, and (b x a x l) is the size of the box. How do I calculate the products of inertia ( I_xy, I_xz and I_yz ) ?? Is there a simple formula for calculating product of inertia for a box??
How do I calculate the angular velocity after computing Inertia Tensor and Inverse Inertia Tensor?? I have already calculated the torque ( r x Force, where r is vector = vertex position of one of the cube vertices mentioned above - center of mass ). Any help would be greatly appreciated.
Thanks a lot.
I can''t remember the first part of your question off-hand, but I know the second part.
Think of Torque T as being like an "angular force", and Moment of Inertia I being like an "angular mass". Since in linear terms, F=MA, in angular terms T=IW (W = angular accelaration). Therefore, your angular acceleration = Torque/MomentOfInertia = TorqueMatrix * InverseMomentOfInertiaTensor. I''ll let you work out the velocity from there.
[teamonkey]
Think of Torque T as being like an "angular force", and Moment of Inertia I being like an "angular mass". Since in linear terms, F=MA, in angular terms T=IW (W = angular accelaration). Therefore, your angular acceleration = Torque/MomentOfInertia = TorqueMatrix * InverseMomentOfInertiaTensor. I''ll let you work out the velocity from there.
[teamonkey]
[teamonkey] [blog] [tinyminions]
June 26, 2003 12:56 AM
Thanks for replying. Regarding inertia tensor and its inverse, does it change during simulation or is it constant? If it changes, how does it change? Also, I''ve been reading a couple of books regarding how to derive the inertia tensor for a box and they''re both different. Can anyone tell me which is correct or are both of them wrong =)
Let m = mass of box, and (b x a x l) is the size of the box.
From "Physics for Game Developers"
I_xx = (1/12)m(a^2 + l^2)
I_yy = (1/12)m(b^2 + l^2)
I_zz = (1/12)m(a^2 + b^2)
I = (I_xx, 0 , 0 )
( 0 , I_yy, 0 )
( 0 , 0 , I_zz )
From Mathematics for 3D Game Programming and Computer Graphics
I_xx = (1/3)m(a^2+l^2)
I_yy = (1/3)m(b^2+l^2)
I_zz = (1/3)m(b^2+a^2)
I_xy = (1/4)mba
I_xz = (1/4)mbl
I_yz = (1/4)mal
I = ( I_xx, -I_xy, -I_xz )
(-I_xy, I_yy, -I_yz )
(-I_xz, -I_yz, I_zz )
Thanks.
Let m = mass of box, and (b x a x l) is the size of the box.
From "Physics for Game Developers"
I_xx = (1/12)m(a^2 + l^2)
I_yy = (1/12)m(b^2 + l^2)
I_zz = (1/12)m(a^2 + b^2)
I = (I_xx, 0 , 0 )
( 0 , I_yy, 0 )
( 0 , 0 , I_zz )
From Mathematics for 3D Game Programming and Computer Graphics
I_xx = (1/3)m(a^2+l^2)
I_yy = (1/3)m(b^2+l^2)
I_zz = (1/3)m(b^2+a^2)
I_xy = (1/4)mba
I_xz = (1/4)mbl
I_yz = (1/4)mal
I = ( I_xx, -I_xy, -I_xz )
(-I_xy, I_yy, -I_yz )
(-I_xz, -I_yz, I_zz )
Thanks.
products of inertia are zero for a principle axis, so a box is just a diagonal matrix like this:
ix 0 0
0 iy 0
0 0 iz
if all your axis are principle, meaning you''re calculating moment of inertia around the center of mass.
the only way you''d get something else for the 0''s is if you''re calculating inertia about some point that''s not center of mass..
--bart
ix 0 0
0 iy 0
0 0 iz
if all your axis are principle, meaning you''re calculating moment of inertia around the center of mass.
the only way you''d get something else for the 0''s is if you''re calculating inertia about some point that''s not center of mass..
--bart
--bart
June 26, 2003 10:09 PM
Thanks for the reply.
My box is centered around the origin which is also my center of mass so the matrix you provided should be correct. Also, during simulation, to calculate Angular Acceleration, I actually need to use InertiaTensor and its inverse in terms of world co-ordinates, correct?? If so, how do I convert it to world co-ordinates??
I(t)_world = R(t) * I_body * R(t)_Transpose
I''(t)_world = R(t) * I''_body * R(t)_Transpose
where I = Inertia tensor, I'' = inverse inertia tensor
R = current rotation matrix
Thanks a lot!
My box is centered around the origin which is also my center of mass so the matrix you provided should be correct. Also, during simulation, to calculate Angular Acceleration, I actually need to use InertiaTensor and its inverse in terms of world co-ordinates, correct?? If so, how do I convert it to world co-ordinates??
I(t)_world = R(t) * I_body * R(t)_Transpose
I''(t)_world = R(t) * I''_body * R(t)_Transpose
where I = Inertia tensor, I'' = inverse inertia tensor
R = current rotation matrix
Thanks a lot!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement