[Math] “Change in rotation” matrix

matricesrotations

Given two rotation matrices A and B (rotated from the same initial frame), how can I find the rotation matrix that represents the change in rotation from A to B? (I actually want to find the Euler axis and angle that represents that change in rotation.)

My one idea seems too involved: Convert A and B into their equivalent Euler angles, find the difference in Euler angles, convert the difference back into a rotation matrix, and then convert the new rotation matrix into Euler axis and angle.

Thanks for the help!

Best Answer

Background: It is very convenient to use the following notation:

$\mathtt R_{UV}$ is a rotation matrix which transform points from reference frame $V$ into the reference frame $U$. Thus: $\mathbf x_U = \mathtt R_{UV} \mathbf x_V$. The inverse rotation is $\mathtt R_{VU} = \mathtt R_{UV}^{-1}=\mathtt R_{UV}^\top$.

Lets, call the initial frame $O$. I assume you mean with "rotated from the same initial frame" a change in the observer frame/passive transformation (http://en.wikipedia.org/wiki/Active_and_passive_transformation).

Thus, you have the rotation matrices $\mathtt R_{OA}$ and $\mathtt R_{OB}$ (which describe the motion of the observer from $O$ to $A$/$B$, or in other words maps points from $A$/$B$ to $O$). Now, I assume you are interested in $\mathtt R_{AB} = \mathtt R_{AO}\mathtt R_{OB} = \mathtt R_{OA}^\top\mathtt R_{OB}$.

Finally, convert $\mathtt R_{AB}$ into axis-angle...

(In case you have $\mathtt R_{AO}$ and $\mathtt R_{BO}$ and want to calculate $\mathtt R_{BA}$ , you get $\mathtt R_{BA}=\mathtt R_{BO}\mathtt R_{AO}^\top$.)