How do I convert an inertia tensor from body space to world space?

In summary, converting the inertia tensor from body space to global space involves using the equation [Ig]=[R]T[Ib][R] and properly converting α from Euler angle representation to axis-angle representation. Make sure to double check your implementation and units, and consider breaking the problem down into smaller steps for troubleshooting. Best of luck!
  • #1
ScanCrowRadio
1
0
I've been trying to solve the following problem involving Angular Acceleration and the inertial tensor for about 2 weeks now. I know it's bad ask for a question to be solved, but I'm really at a loss here folks. I'm a high school student who has taken a physics class.

What I'm Trying To Do: I'm trying to give a 3D rigid body an angular acceleration α by applying a torque τ. This is for a program I am writing, so I need to calculate this every time the game updates. I'm working with the Navidia Physx API.

Question: How do I properly convert the inertial tensor, I, from body space to global space?

Starting Variables: desired angular acceleration α(angle axis representation) in global space, the inertia tensor of the object I in body space

What I am trying to find: The torque τ(angle axis representation) in global space that when applied to the body will give it the angular acceleration α.




I've already tried [Ig]=[R]T[Ib][R] where [R] is the rotation matrix for the rigid body in question, Ig is the inertia tensor in global space, and Ib is the inertia tensor in body space. After I find this Ig , I convert α into Euler Angle representation and multiply it against Ig:
αx * Ig xx
αy * Ig yy
αz * Ig zz

I also have tried keeping I in body space, converting α to body space and using Im=nT[Ib]n , where n is the axis of the axis angle representation of α, and Im is the scalar moment of inertia about that axis. I then take this Im and multiply it by α in global space.

Both of these calculations have ended up in error. If you would like me to post the code of both of these attempts I am willing to do so, just ask me in the comments.

If you covert between representations ( for example quaternion -> Euler angle), just mention it.

Even though this question is not from Home Work, if you think I should move this question over to HOMEWORK, just comment and I'll do so.

Thank you so much!
 
Physics news on Phys.org
  • #2


I understand your struggle with trying to convert the inertia tensor from body space to global space. This can be a complex problem, especially for someone who has taken only a high school physics class.

Firstly, I want to clarify that the equation you have tried, [Ig]=[R]T[Ib][R], is correct. However, there may be some errors in your implementation of this equation. I recommend checking your code and making sure that you are using the correct rotation matrix and that you are properly multiplying the matrices.

In addition, I recommend double checking your conversion of α from Euler angle representation to axis-angle representation. Make sure that you are using the correct conversion equations and that you are applying them in the correct order.

Another thing to consider is the units of your inputs and outputs. Make sure that all of your values are in the correct units (e.g. radians for angles) and that your outputs are also in the correct units.

If you are still having trouble, it may be helpful to break down the problem into smaller steps and test each step individually. For example, first try converting α from Euler angle representation to axis-angle representation and then apply the rotation matrix to the inertia tensor. This can help you identify where the error is occurring.

Finally, I recommend checking the documentation for the Navidia Physx API to see if there are any specific guidelines or functions for converting the inertia tensor from body space to global space.

I hope this helps and good luck with your program! If you continue to have trouble, don't hesitate to reach out for further assistance.
 

1. What is an inertia tensor?

An inertia tensor is a mathematical representation of an object's mass distribution and how it resists changes in its rotational motion.

2. Why do I need to convert an inertia tensor from body space to world space?

Converting an inertia tensor from body space to world space allows you to calculate an object's rotational motion in relation to the world, rather than just its own local coordinate system.

3. What is the process for converting an inertia tensor from body space to world space?

To convert an inertia tensor from body space to world space, you need to use a transformation matrix that takes into account the object's orientation and position in the world. This matrix is typically a combination of rotation and translation matrices.

4. Can I use the same conversion method for all types of objects?

Yes, the same conversion method can be used for all types of objects, as long as the object's mass and mass distribution remain constant.

5. Are there any limitations to converting an inertia tensor from body space to world space?

One limitation is that the conversion assumes that the object is rigid and has a constant mass distribution. If the object deforms or its mass distribution changes, the conversion may not accurately reflect its rotational motion.

Similar threads

Replies
12
Views
343
Replies
3
Views
2K
Replies
2
Views
762
Replies
42
Views
4K
Replies
1
Views
1K
  • Introductory Physics Homework Help
Replies
4
Views
912
Replies
2
Views
1K
  • Classical Physics
Replies
5
Views
2K
  • Mechanics
Replies
10
Views
2K
  • Introductory Physics Homework Help
Replies
5
Views
1K
Back
Top