Relative rotations and their angular velocities

In many applications, we are interested in dealing with compound rotations. For example, in biomechanics, studies of the knee joint feature the rotation of the femur relative to the tibia; in robotics, one often examines the rotation of a payload relative to an arm of the robot; and in celestial mechanics, one considers the rotation of the Moon relative to the Earth (which in turn is rotating about the Sun). For these instances, two quantities are of interest: the parameters (axis and angle) and angular velocity of the compound rotation. Here, we address these two topics using the work [1] of Olinde Rodrigues (1795–1851) from 1840 and a more recent work [2] by Casey and Lam in 1986.

Angle and axis of rotation of the compound rotation

Consider two rotation tensors {\bf R}_1 and {\bf R}_2, and suppose that

(1)   \begin{eqnarray*} && {\bf R}_1 = {\bf L}\left(\theta_1, \, {\bf r}_1\right), \\ \\ && {\bf R}_2 = {\bf L}\left(\theta_2, \, {\bf r}_2\right). \end{eqnarray*}

That is, the angle and axis of rotation of {\bf R}_\alpha (\alpha = 1, \, 2) are \theta_\alpha and {\bf r}_\alpha. Rodrigues showed that {\bf R}_1 and {\bf R}_2 could be represented in the following forms:

(2)   \begin{eqnarray*} && {\bf R}_1 = (e_0^2 - {\bf e}\cdot{\bf e}){\bf I} + 2{\bf e}\otimes{\bf e} - 2e_0( \bepsilon {\bf e}), \\ \\ && {\bf R}_2 = (f_0^2 - {\bf f}\cdot{\bf f}){\bf I} + 2{\bf f}\otimes{\bf f} - 2f_0( \bepsilon {\bf f}). \end{eqnarray*}

Here, \left ( e_0, \, {\bf e} \right ) and \left ( f_0, \, {\bf f} \right ) represent what are commonly referred to as a pair of sets of Euler parameters (or unit quaternions), where

(3)   \begin{eqnarray*} && e_0 = \cos\left(\frac{\theta_1}{2}\right), \qquad {\bf e} = \sin\left(\frac{\theta_1}{2}\right){\bf r}_1, \\ \\ \\ && f_0 = \cos\left(\frac{\theta_2}{2}\right), \qquad {\bf f} = \sin\left(\frac{\theta_2}{2}\right){\bf r}_2. \end{eqnarray*}

The representations (2) follow from Euler’s representation for the pair of tensors by direct substitution of (3) and judicious use of trigonometric identities. Rodrigues then computed the composite rotation and showed directly that

(4)   \begin{equation*} {\bf R} = {\bf R}_2{\bf R}_1 = (g_0^2 - {\bf g}\cdot{\bf g}){\bf I} + 2{\bf g}\otimes{\bf g} - 2g_0( \bepsilon {\bf g}), \end{equation*}


(5)   \begin{eqnarray*} && g_0 = e_0f_0 - {\bf e}\cdot{\bf f}, \\ \\ && {\bf g} = e_0 {\bf f} + f_0{\bf e} + {\bf f}\times{\bf e}. \end{eqnarray*}

Thus, the angle of rotation \phi and axis of rotation {\bf r} of the compound rotation {\bf R} are

(6)   \begin{eqnarray*} && \phi = 2 \cos^{-1}\left( g_0\right), \\ \\[0.10in] && {\bf r} = \mbox{cosec}\left(\frac{\phi}{2}\right){\bf g}. \end{eqnarray*}

Although these results were first established by Rodrigues [1] in 1840, the earliest English commentary on them is by Cayley [3] in 1845. If you are familiar with quaternions, then you might recognize the similarity of (5) to Hamilton’s rules for quaternion multiplication from 1843. The reader is referred to Altmann [4, 5], Gray [6], and Pujol [7] for further historical details on this matter. We note that Pujol provides a detailed derivation of and useful commentary on Rodrigues’ formulae.

Angular velocity of the compound rotation

One approach to computing the angular velocity vector of a compound rotation {\bf R} = {\bf R}_2{\bf R}_1 is to use Rodrigues’ result (4) along with Euler’s representation

(7)   \begin{equation*} {\bomega}_{\bf R} = \dot{\phi}{\bf r} + \sin(\phi)\dot{\bf r} + (1 - \cos(\phi)){\bf r}\times\dot{\bf r} \end{equation*}

for the angular velocity vector of a rotation in terms of a single rotation angle \phi and rotation axis {\bf r}. Such a calculation is very tedious. We instead follow Casey and Lam [2], who defined a very useful and intuitive relative angular velocity vector. To discuss the relative angular velocity vector, it is convenient to define three sets of right-handed orthonormal vectors: \{{\bf p}_1, \, {\bf p}_2, \, {\bf p}_3 \}, \{ {}_1{\bf t}_1, \, {}_1{\bf t}_2, \, {}_1{\bf t}_3 \}, and \{ {}_2{\bf t}_1, \, {}_2{\bf t}_2, \, {}_2{\bf t}_3 \}, where we assume that \dot{\bf p}_i = {\bf 0} (i = 1, \, 2, \, 3). For a given {\bf R}_1 and {\bf R}_2, two of these sets can be defined by use of the representations

(8)   \begin{eqnarray*} && {\bf R}_1 = \sum_{i \, \, = \, 1}^3 {}_1{\bf t}_i\otimes {\bf p}_i, \\ \\ \\ && {\bf R}_2 = \sum_{i \, \, = \, 1}^3 {}_2{\bf t}_i\otimes{}_1{\bf t}_i. \end{eqnarray*}

Therefore, the compound rotation {\bf R} = {\bf R}_2{\bf R}_1 is such that

(9)   \begin{equation*} {\bf R} = \sum_{i \, \, = \, 1}^3 {}_2{\bf t}_i\otimes {\bf p}_i. \end{equation*}

In words, the tensor {\bf R} transforms the vectors {\bf p}_i into the vectors {}_2{\bf t}_i. Now, following Casey and Lam [2], we consider the relative angular velocity tensor

(10)   \begin{equation*} \hat{\bOmega}_{{\bf R}_2} = {\bOmega}_{\bf R} - {\bOmega}_{{\bf R}_1}. \end{equation*}

Using the definition of the angular velocity tensors associated with {\bf R} and {\bf R}_1 and the fact that \dot{\bf R} = \dot{\bf R}_2{\bf R}_1 + {\bf R}_2\dot{\bf R}_1, we substitute for {\bOmega}_{\bf R} and {\bOmega}_{{\bf R}_1} in (10) to find that

(11)   \begin{eqnarray*} \hat{\bOmega}_{{\bf R}_2} = {\bOmega}_{\bf R} - {\bOmega}_{{\bf R}_1} \!\!\!\!\! &=& \!\!\!\!\! \dot{\bf R}{\bf R}^T - \dot{\bf R}_1{\bf R}^T_1 \\[0.075in] &=& \!\!\!\!\! \dot{\bf R}_2{\bf R}_1{\bf R}^T_1 {\bf R}^T_2 + {\bf R}_2\dot{\bf R}_1{\bf R}^T_1 {\bf R}^T_2 - \dot{\bf R}_1{\bf R}^T_1 \\[0.075in] &=& \!\!\!\!\! \dot{\bf R}_2{\bf R}^T_2 + {\bf R}_2{\bOmega}_{{\bf R}_1}{\bf R}^T_2 - {\bOmega}_{{\bf R}_1} \\[0.075in] &=& \!\!\!\!\! \dot{\bf R}_2{\bf R}^T_2 + {\bf R}_2{\bOmega}_{{\bf R}_1}{\bf R}^T_2 + {\bOmega}^T_{{\bf R}_1} \\[0.075in] &=& \!\!\!\!\! \left(\dot{\bf R}_2 + {\bf R}_2{\bOmega}_{{\bf R}_1} + {\bOmega}^T_{{\bf R}_1}{\bf R}_2 \right){\bf R}^T_2. \end{eqnarray*}


(12)   \begin{equation*} \corot{\bf R}_2 = \dot{\bf R}_2 + {\bf R}_2{\bOmega}_{{\bf R}_1} + {\bOmega}^T_{{\bf R}_1}{\bf R}_2, \end{equation*}

where the corotational derivative

(13)   \begin{equation*} \corot{\bf R}_2 = \sum_{i \, \, = \, 1}^3 \sum_{k \, \, = \, 1}^3 \dot{R}_{2ik} \left ( {}_1{\bf t}_i \otimes{}_1{\bf t}_k \right ) , \end{equation*}

for which R_{2ik} = (({\bf R}_2){}_1{\bf t}_k)\cdot{}_1{\bf t}_i. That is, \corot{\bf R}_2 is the derivative of the tensor {\bf R}_2 assuming the vectors {}_1{\bf t}_i are constant. Consequently, the relative angular velocity tensor

(14)   \begin{equation*} \hat{\bOmega}_{{\bf R}_2} = {\bOmega}_{\bf R} - {\bOmega}_{{\bf R}_1} = \corot{\bf R}_2 {\bf R}^T_2. \end{equation*}

If we denote the axis of rotation of {\bf R}_2 by {\bf r}_2 and its angle of rotation by \phi_2, then we can parallel the derivation of the result (7) for {\bomega}_{\bf R} to show that the relative angular velocity vector has the representation

(15)   \begin{equation*} \hat{\bomega}_{{\bf R}_2} = {\bomega}_{\bf R} - {\bomega}_{{\bf R}_1} = \dot{\phi}_2{\bf r}_2 + \sin\left(\phi_2\right) \corot{\bf r}_2 + \left(1 - \cos\left(\phi_2\right)\right){\bf r}_2\times \corot{\bf r}_2, \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

where, for {\bf r}_2 = \sum_{i \, \, = \, 1}^3 r_i \left({}_1{\bf t}_i\right), the corotational derivative \corot{\bf r}_2 = \sum_{i \, \, = \, 1}^3 \dot{r}_i \left({}_1{\bf t}_i\right). Equivalently,

(16)   \begin{equation*} \hat{\bomega}_{{\bf R}_2} = - \frac{1}{2}{\bepsilon}\left[ \corot{\bf R}_2 {\bf R}^T_2\right]. \end{equation*}

Formula (15) proves to be exceedingly useful when calculating the angular velocity vector associated with various representations of a rotation tensor. In particular, for the Euler angle representation, we decompose {\bf R} into the product of three rotation tensors and then invoke (15) twice to obtain a representation for the corresponding angular velocity vector. The manner in which we do this is similar to the example we now discuss.

An example

To illustrate the convenience of the relative angular velocity vector (15), suppose we consider the compound rotation {\bf R} = {\bf R}_2 {\bf R}_1, where

(17)   \begin{equation*} {\bf R}_1 = \cos(\psi)({\bf I} - {\bf E}_3\otimes{\bf E}_3) -\sin(\psi) ( \bepsilon {\bf E}_3 ) + {\bf E}_3\otimes{\bf E}_3. \end{equation*}

The tensor {\bf R}_1 defines a transformation consisting of a rotation through an angle \psi about {\bf E}_3. This rotation transforms {\bf E}_i (i = 1, \, 2, \, 3) to {\bf t}_i:

(18)   \begin{eqnarray*} && {\bf t}_1 = \cos(\psi){\bf E}_1 + \sin(\psi){\bf E}_1, \\[0.15in] && {\bf t}_2 = - \sin(\psi){\bf E}_1 + \cos(\psi){\bf E}_2, \\[0.15in] && {\bf t}_3 = {\bf E}_3. \end{eqnarray*}

Thus, {\bf R}_1 has the alternative representation

(19)   \begin{equation*} {\bf R}_1 = {\bf t}_1\otimes{\bf E}_1 + {\bf t}_2\otimes{\bf E}_2 + {\bf t}_3\otimes{\bf E}_3. \end{equation*}

Note the change in notation when compared to (8)1: {\bf p}_i and {}_1{\bf t}_i are replaced with {\bf E}_i and {\bf t}_i, respectively. The relative rotation tensor {\bf R}_2 is chosen to correspond to a rotation through an angle \theta about {\bf t}_2:

(20)   \begin{eqnarray*} {\bf R}_2 \!\!\!\!\! &=& \!\!\!\!\! \cos(\theta)({\bf I} - {\bf t}_2\otimes{\bf t}_2) - \sin(\theta) ( \bepsilon {\bf t}_2 ) + {\bf t}_2\otimes{\bf t}_2 \\[0.075in] &=& \!\!\!\!\! \cos(\theta)({\bf t}_1\otimes{\bf t}_1 + {\bf t}_3\otimes{\bf t}_3) - \sin(\theta)\left({\bf t}_3\otimes{\bf t}_1 - {\bf t}_1\otimes{\bf t}_3\right) + {\bf t}_2\otimes{\bf t}_2. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{eqnarray*}

To calculate \bomega_{{\bf R}_1}, we can employ (7) to find that

(21)   \begin{eqnarray*} {\bomega}_{{\bf R}_1} \!\!\!\!\! &=& \!\!\!\!\! \dot{\psi}{\bf E}_3 + \sin(\psi)\dot{\bf E}_3 + (1 - \cos(\psi)){\bf E}_3\times\dot{\bf E}_3 \\[0.075in] &=& \!\!\!\!\! \dot{\psi}{\bf E}_3. \end{eqnarray*}

However, we cannot appeal directly to (7) to determine \bomega_{{\bf R}} because we have not calculated the rotation axis {\bf r} and rotation angle \phi of {\bf R}. Instead, we use the relative angular velocity vector \hat{\bomega}_{{\bf R}_2}. To do this, we first need to compute the corotational derivative of {\bf R}_2:

(22)   \begin{equation*} \corot{\bf R}_2 = - \dot{\theta}\sin(\theta)({\bf t}_1\otimes{\bf t}_1 + {\bf t}_3\otimes{\bf t}_3) - \dot{\theta}\cos(\theta)\left({\bf t}_3\otimes{\bf t}_1 - {\bf t}_1\otimes{\bf t}_3\right). \end{equation*}

Hence, from (14),

(23)   \begin{equation*} \hat{\bOmega}_{{\bf R}_2} = \dot{\theta}\left({\bf t}_1\otimes{\bf t}_3 - {\bf t}_3\otimes{\bf t}_1\right), \end{equation*}

and therefore, with the help of (16), we conclude that

(24)   \begin{equation*} \hat{\bomega}_{{\bf R}_2} = \dot{\theta}{\bf t}_2. \end{equation*}

Alternatively, we can arrive at (24) by using (15) directly. By replacing {\bf r}_2 and \phi_2 in (15) with {\bf t}_2 and \theta, respectively, and then appealing to the fact that \corot{\bf t}_2 = {\bf 0},

(25)   \begin{equation*} \hat{\bomega}_{{\bf R}_2} = \dot{\theta}{\bf t}_2 + \sin(\theta) \corot{\bf t}_2 + (1 - \cos(\theta)){\bf t}_2\times \corot{\bf t}_2 = \dot{\theta}{\bf t}_2. \end{equation*}

This alternative approach is clearly equivalent to, but more attractive than, the method that involves calculating \corot{\bf R}_2. Combining the expressions for {\bomega}_{{\bf R}_1} and \hat{\bomega}_{{\bf R}_2}, we arrive at the angular velocity vector for {\bf R}:

(26)   \begin{equation*} {\bomega}_{{\bf R}} = {\bomega}_{{\bf R}_1} + \hat{\bomega}_{{\bf R}_2} = \dot{\psi}{\bf E}_3 + \dot{\theta}{\bf t}_2. \end{equation*}

The intuitive nature of this result is often surprising. Using (7), it is simple to see that \bomega_{{\bf R}_2} \ne \hat{\bomega}_{{\bf R}_2}:

(27)   \begin{eqnarray*} \bomega_{{\bf R}_2} \!\!\!\!\! &=& \!\!\!\!\! \dot{\theta}{\bf t}_2 + \sin(\theta)\dot{\bf t}_2 + \left( 1 - \cos(\theta)\right){\bf t}_2\times\dot{\bf t}_2 \\[0.075in] &=& \!\!\!\!\! \dot{\theta}{\bf t}_2 - \dot{\psi}\sin(\theta)\dot{\bf t}_1 + \dot{\psi}\left( 1 - \cos(\theta)\right){\bf t}_3 \\[0.075in] & \ne & \!\!\!\!\! \dot{\theta}{\bf t}_2 = \hat{\bomega}_{{\bf R}_2}, \end{eqnarray*}

where we used the result that \dot{\bf t}_2 = - \dot{\psi}{\bf t}_1. The distinction between the angular velocity vectors \bomega_{{\bf R}_2} and \hat{\bomega}_{{\bf R}_2} can be attributed to the fact that \hat{\bomega}_{{\bf R}_2} is computed assuming the rotation axis {\bf t}_2 is fixed, which is not the case when calculating {\bomega}_{{\bf R}_2}.


  1. Rodrigues, O., Des lois géométriques qui régissent les déplacemens d’un système solide dans l’espace, et de la variation des coordonnées provenant de ses déplacements consideérés indépendamment des causes qui peuvent les produire, Journal des Mathématique Pures et Appliquées 5 380–440 (1840).
  2. Casey, J., and Lam, V. C., On the relative angular velocity tensor, ASME Journal of Mechanisms, Transmissions, and Automation in Design 108(3) 399–400 (1986).
  3. Cayley, A., On certain results relating to quaternions, Philosophical Magazine 26 141–145 (1845). Reprinted in pp. 123–126 of The Collected Mathematical Papers of Arthur Cayley, Sc.D., F.R.S., Vol. 1, Cambridge University Press, Cambridge (1889).
  4. Altmann, S. L., Rotations, Quaternions, and Double Groups, Oxford University Press, New York (1986). Reprinted by Dover Publications in 2005.
  5. Altmann, S. L., Hamilton, Rodrigues, and the quaternion scandal, Mathematics Magazine 62(5) 291–308 (1989).
  6. Gray, J. J., Olinde Rodrigues’ paper of 1840 on transformation groups, Archive for History of Exact Sciences 21(4) 375–385 (1980).
  7. Pujol, J., The Rodrigues equations for the composition of finite rotations: A simple ab initio derivation and some consequences, ASME Applied Mechanics Reviews 65(5) 054501 (2013).