问题描述:

I'm simulating a physical object, using a mass spring system. By means of deltas and cross products, I can easily calulate the up, forward and side vectors.

I want to calculate what the angular rate (how fast it's spinning), for the object space X, Y and Z axis. Calculating the world space angle first won't help, since I need the angular rate in object space (how a sensor glued to the object would see it).

Any 3D maths people out there know how to do this?

I believe you want to take the CG of all the masses. Average the velocities of all the masses (using a mass-weighted average) this is the velocity of the object. Then take the velocity of each mass minus the velocity of the CG and compute the angular velocity using this relative velocity and the position relative to the CG - I think that's a cross product. This will give you the angular velocity vector in world coordinates. This may be averaged for all the masses, since they will be slightly different as the springs allow deformation. Simply project this angular velocity vector onto the (world space) sensor axis via dot-product and you have your object-space angular velocity on that axis. Your sensor axis must be a unit vector, and you'll need 3 of them - which you say you can get.

You might use the Lagrange mechanics in order to describe the system dynamics.