Archived

This topic is now archived and is closed to further replies.

Inertia Tensor Changes

This topic is 5485 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Hey, How does an inertia tensor change as the center of mass moves about? Specifically, for boxes and/or spheres? Walt

Share on other sites
Why is the center of mass changing if the geometry remains a box or sphere? The center of mass would only change if the mass distribution changes and for a continuous solid or shell, this will happen when:

1) the boundary shape deforms; or,
2) the density is not constant within the solid

If the density is constant and the boundary remains a perfect brick-shaped box or perfect sphere, the center of mass remains at the center for all time.

I'm assuming no chemical or nuclear reactions.

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.

[edited by - grhodes_at_work on November 10, 2003 8:54:59 PM]

Share on other sites
...All I mean is if the center of mass is off-center... My current tensor doesn''t seem to work with that, but it works fine if the center of mass is at the origin.

Share on other sites
There are fairly straightforward formulas for calculating the inertia tensor of a sphere or rectangular prism of constant density - I assume you''re using those to calculate your tensors? I don''t know that there''s anything equivalent for primitives with a displaced center of mass. In these cases, you may have to decompose your object into subobjects, and sum those.

The book ''Physics for Game Developers'' has a good explanation of how to calculate the inertia tensor for a collection of linked rigid bodies.

Share on other sites
the inertia tensor needs to be rotated with the object's orientation, obviously.

Inertia = Orientation * LocalInertia * Orientation.Inverse();

[edited by - oliii on November 11, 2003 8:37:05 AM]

Share on other sites
quote:
Original post by oliii
the inertia tensor needs to be rotated with the object''s orientation, obviously.

Inertia = Orientation * LocalInertia * Orientation.Inverse();

[edited by - oliii on November 11, 2003 8:37:05 AM]

Uhm. I do that, but one question. Does that REALLY change anything??? I mean, I look at my matrix before and after and it doesn''t seem to change from the LocalInertia. Doesn''t the inverse multiply afterwards cancel out the first since the LocalInertia is just a scalar matrix???

Share on other sites
actually, you might be right. I only tried with centred objects. Shifting the centre of mass would definitely affect the inertia. I suppose, you need to calculate the inertia matrix properly, integrate along the three axis, and make sample points close to the centre of mass with a larger ''mass'', so the inertia will shift towards the centre of mass. There are plenty of tutorials on how to do it on the net. Here''s one

Rigid Body Simulation Tutorial

1. 1
Rutin
41
2. 2
3. 3
4. 4
5. 5

• 16
• 18
• 12
• 14
• 9
• Forum Statistics

• Total Topics
633362
• Total Posts
3011526
• Who's Online (See full list)

There are no registered users currently online

×