• Advertisement
Sign in to follow this  

the right way to represent inverse inertia tensor

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

If you intended to correct an error in the post then please contact us.

Recommended Posts

float Ix, Iy, Iz;
 
        Ix = Iy = Iz = 0.4f * mass * radius * radius; //solid sphere
 
        inertia.m11 = Ix;            inertia.m12 = 0;        inertia.m13 = 0;
        inertia.m21 = 0;            inertia.m22 = Iy;        inertia.m23 = 0;
        inertia.m31 = 0;            inertia.m32 = 0;        inertia.m33 = Iz;
 
        b_inertia = m_inertia_inverse = inertia.inverse();
        float inverseInertia = 1.0f / Ix;
 
i'm doing this way and it's giving me problems... are you agree that is the right way??

Share this post


Link to post
Share on other sites
Advertisement

The inverse of inertia tensor in 3D is an inertia tensor itself. The example of the sphere is missleading since it is some scalar factor times the identity matrix.


Not sure what you are saying there. The units are different and a general inertia tensor is not equal to its inverse, and neither is it for a sphere.

Nothing looks obviously wrong with the matrix above.

Share this post


Link to post
Share on other sites

inverse_inertia = inertia.inverse();

 

Anyways, if it aids:

 

By choosing the correct coordinate system for the object (For basic objects, the obvious one), you can always diagonalise the inertia tensor, and so it, and its inverse can be stored in a vector instead of a matrix, and then the inverse is just the component wise inverse:

(Ix, Iy, Iz)^-1 = (1/Ix, 1/Iy, 1/Iz)

Edited by luca-deltodesco

Share this post


Link to post
Share on other sites

oh

 

inverse_inertia = inertia.inverse();

 

Anyways, if it aids:

 

By choosing the correct coordinate system for the object (For basic objects, the obvious one), you can always diagonalise the inertia tensor, and so it, and its inverse can be stored in a vector instead of a matrix, and then the inverse is just the component wise inverse:

(Ix, Iy, Iz)^-1 = (1/Ix, 1/Iy, 1/Iz)

hm... so i can use vectors .... or i can use   float inverseInertia = 1.0f / Ix; instead of vectors and do the multiplication between them...

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement