Search code examples
physicsbulletphysicsbullet

What does having an inertia tensor of zero do in Bullet?


In the Bullet Physics library, when constructing a rigid body the default argument for the inertia tensor is the zero vector.

My understanding of inertia is fairly elementary but from the equation

torque = inertia * angular_velocity

I would expect angular velocity on an object with zero inertia to be undefined.

The documentation for constructing rigid bodies says

For dynamic objects, you can use the collision shape to approximate the local inertia tensor, otherwise use the zero vector (default argument)

So what happens with this zero inertia? Have I misunderstood the equation? Or is having zero inertia in Bullet similar to having zero mass in defining an object to be static with respect to orientation?


Solution

  • To start let us define inertia.

    Inertia is the resistance of any physical object to a change its state of motion, or the tendency of an object to resist any change in its motion.

    The off diagonal elements of the Inertia Tensor are called the products of inertia. The products of inertia are zero when the body is symmetrical about the axes of rotation, such as for a rectangular box or cylinder rotating on their symmetry axis. I would imagine that the Inertia Tensor that is used in the physics engine you use is always diagonal to avoid complexity.

    I suppose in the case of your ballistic physic engine, where this torque might come in to play is for an object that let's say is spinning around the z-axis with the following angular velocity (0, 0, ωr) [in cylindrical coordinates (r, theta, z)], then you might want to find out the torque required to stop this rotation in some time t (i.e. a rotational acceleration of magnitude -ωr/t). Here you would then use the equation you have stated above.

    The interpretation of the zero matrix would be to represent zero 'inertia', and object with no mass and what I have said above again holds.