Rotation of more than 2pi : LUSENET : quaternions : One Thread

First of all, forgive me for my english : I'm french and I'm not an expert in that language ;)

I have a problem due to the fact that a quaternion, if I understood well, is made to store rotations by an angle of 0-2pi radians. In my 3D engine, I use 2 quaternions to represent, for each object : - its angle : the actual orientation of the object - its spin : the rotation speed of the object, i.e. a quaternion representing the rotation that the object makes IN ONE SECOND

At each frame, the new angle of the object is computed by making an interpolation with the time elapsed since the last frame. For example, if the frame time is 10ms, then we add to the angle of the object, the spin quaternion interpolated of 1/10. The problem is that I want to be able to define that my object makes, for example, a rotation of 11pi per second, which would give a rotation of 1.1pi if we take the same 10ms frame time. However, if I try to make a quaternion with a 11pi rotation angle, a modulo 2pi is done and my quaternion only represents a 1pi rotation. Consequently, the object will not be turned of 1.1pi at each frametime, but of 1/10pi, which is totally different.

So I would like to know if quaternion can store rotations of more than 2pi angles, and if not, what is the solution to my problem : perhaps I don't use quaternions correctly ? Or perhaps you can propose me a trick that could help me ? I'm surely not the first person to be confronted to that problem...

If my question is incomprehensible because of my english speaking, please tell it to me, I'll try to improve it...

-- Bruno L. (, May 30, 2003

Moderation questions? read the FAQ