Search code examples
rotationquaternions

Magnitude of rotation between two quaternions


I have a quaternion for an object's starting rotation, and a quaternion for an object's ending rotation, and I am SLERPing the shortest rotation between the two.

How can I figure out the magnitude of the rotation between the object's start and end rotations?


Solution

  • Let's introduce two quaternions qStart and qEnd. Magnitude of rotation between them can be expressed as a quaternion:

    qRot = qEnd * qStart.inversed();  
    

    and the exact angle of rotation can be extracted as:

    2*atan2(qRot.vec.length(), qRot.w);