Interpolating between rotation matrices

Sonoman picture Sonoman · Apr 7, 2011 · Viewed 7.8k times · Source

I have 2 rotation matrices (lets call them A and B) where:

A = 1  0  0
    0  0 -1
    0  1  0

and

B = -1  0  0
     0  0 -1
     0 -1  0

This is basically just a rotation where the camera spins around to look behind itself. Obviously I can't just interpolate the values in the matrices directly because it looks weird. I have tried converting the matrices to Euler angles which yields 2 sets of X,Y,Z angles and trying to determine which angles to use based on the minimum distance between each component of the X,Y,Z angle. That definitely results in the kind of rotation I want but I can't think of a decent way to determine which angles to interpolate between because sometimes the sets of angles which result in the least error result in a rotation about the wrong axis/axes. I also tried quaternions but that essentially gave me the same result. Can anyone point me in the right direction?

Answer

Ali picture Ali · Apr 7, 2011

Use quaternions (SLERP). Neither rotation matrices nor Euler angles are appropriate for interpolation.

See 45:05 here (David Sachs, Google Tech Talk).