# problem with rotational dynamics

## Recommended Posts

Hi everyone. I'm doing my class project and i'm having troubles with Euler integration (witch seems to be the basic)...
The main loop:

torque = position.cross(force);

momentum += dt * force;
//velocity = momentum * (1.0f / mass);

position += velocity * dt;

ang_momentum += torque * dt;
m_inertia_inverse = MakeMatrixFromQuaternion(orientation).transpose() * g_inertia * MakeMatrixFromQuaternion(orientation);
ang_vel = multvm(ang_momentum, m_inertia_inverse); //multiplies a vector by a matrix

orientation += (Quaternion(0, ang_vel.x, ang_vel.y, ang_vel.z) * orientation) * (0.5f * dt);
orientation.normalize();

"g_inertia" is the following matrix3

Ix = Iy = Iz = 0.4f * mass * Mathematics::sqrt(radius);

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;

and i'm rotating like this:

orientation.angleAxis(angle, axis); //quaternion to angle axis

glTranslatef(position.x, position.y, position.z);
glRotatef( angle / Mathematics::pi * 180.0f, axis.x, axis.y, axis.z );

Is the code right? i've spend 5 days trying to solve it but i think is a little problem and i can't see

Seems like i'm having trouble with the numbers... they are large, especially with the angular velocity...

## Create an account

Register a new account

• ### Forum Statistics

• Total Topics
627701
• Total Posts
2978702

• 21
• 14
• 12
• 10
• 12