**0**

# the right way to represent inverse inertia tensor

###
#1
Members - Reputation: **1886**

Posted 11 February 2013 - 08:22 AM

"Information is not knowledge. The only source of knowledge is experience." - Albert Einstein

Irlan Engine: http://robsrc.wordpress.com/

###
#3
Members - Reputation: **1886**

Posted 11 February 2013 - 11:28 AM

oh... then, i don't need to do: b_inertia = m_inertia_inverse = inertia.inverse(); right??

**Edited by irlanrobson, 11 February 2013 - 11:29 AM.**

"Information is not knowledge. The only source of knowledge is experience." - Albert Einstein

Irlan Engine: http://robsrc.wordpress.com/

###
#4
Members - Reputation: **659**

Posted 11 February 2013 - 12:35 PM

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.

###
#5
Members - Reputation: **637**

Posted 11 February 2013 - 12:51 PM

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, 11 February 2013 - 12:57 PM.**

###
#6
Members - Reputation: **1886**

Posted 11 February 2013 - 01:25 PM

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...

"Information is not knowledge. The only source of knowledge is experience." - Albert Einstein

Irlan Engine: http://robsrc.wordpress.com/