Euler’s representation

Leonhard Euler defined a rotation by using an angle of rotation \phi and an axis of rotation {\bf r}. This representation can be seen in Section 49 in one of Euler’s great papers on rigid-body dynamics from 1775 [1]. There, he provides expressions for the components of the tensor {\bf R} in terms of an angle of rotation \phi and the direction cosines p, q, and r of the axis of rotation. In our notation, {\bf r} = p{\bf E}_1 + q {\bf E}_2 + r{\bf E}_3. Using notation introduced over a century later by Gibbs [2], Euler’s representation for a tensor that produces this rotation can be written as

(1)   \begin{equation*} {\bf R} = {\bf L}(\phi, \, {\bf r}) = \cos(\phi)({\bf I} - {\bf r}\otimes{\bf r}) - \sin(\phi)(\bepsilon {\bf r}) + {\bf r}\otimes{\bf r}, \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

where {\bf r} is a unit vector and \phi is a counterclockwise angle of rotation. We refer to (1) as Euler’s representation of a rotation tensor and use the function {\bf L} to prescribe the rotation tensor associated with an angle and axis of rotation. The three independent parameters of the tensor {\bf R} are the angle of rotation \phi and the two independent components of the unit vector {\bf r}. The reason {\bf r} is known as the axis of rotation lies in the fact that it is invariant under the action of {\bf R}: {\bf R}{\bf r} = {\bf r}. Euler’s representation is used to define other representations of a rotation tensor.

Euler’s theorem on rotation tensors and proper-orthogonal tensors

It is interesting to examine some of the features of Euler’s representation (1). To this end, we define a right-handed orthonormal basis \{ {\bf p}_1, \, {\bf p}_2, \, {\bf p}_3 \} with {\bf r} = {\bf p}_3. Using this basis, we have

(2)   \begin{eqnarray*} && {\bf I} = {\bf p}_1\otimes{\bf p}_1 + {\bf p}_2\otimes{\bf p}_2 + {\bf p}_3\otimes{\bf p}_3, \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\[0.15in] && {\bf r}\otimes{\bf r} = {\bf p}_3\otimes{\bf p}_3, \\[0.15in] &&\bepsilon {\bf r} = {\bf p}_1\otimes{\bf p}_2 - {\bf p}_2\otimes{\bf p}_1 . \end{eqnarray*}

Consequently, we can write

(3)   \begin{equation*} {\bf R} = {\bf L}(\phi, \, {\bf r} = {\bf p}_3) = \cos(\phi)({\bf p}_1\otimes{\bf p}_1 + {\bf p}_2\otimes{\bf p}_2) + \sin(\phi)({\bf p}_2\otimes{\bf p}_1 - {\bf p}_1\otimes{\bf p}_2) + {\bf p}_3\otimes{\bf p}_3. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

Because ({\bf a}\otimes{\bf b})^T = {\bf b}\otimes{\bf a}, we find that

(4)   \begin{equation*} {\bf R}^T = {\bf L}^T \left(\phi, \, {\bf r} = {\bf p}_3\right) = \cos(\phi)({\bf p}_1\otimes{\bf p}_1 + {\bf p}_2\otimes{\bf p}_2) + \sin(\phi)({\bf p}_1\otimes{\bf p}_2 - {\bf p}_2\otimes{\bf p}_1) + {\bf p}_3\otimes{\bf p}_3. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

Using (3) and (4), it is simple to verify that {\bf R}{\bf R}^T is the identity tensor. Next, we examine the determinant of {\bf R}. With the help of a matrix representation [R_{ik}] (i, \, k = 1, \, 2, \, 3) of \mathbf{R},

(5)   \begin{equation*} \det({\bf R}) = \det \left ( \left[ \begin{array}{c c c } \cos(\phi) & - \sin(\phi) & 0 \\ \sin(\phi) & \cos(\phi) & 0 \\ 0 & 0 & 1 \end{array} \right] \right ) = 1. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

In conclusion, {\bf R}{\bf R}^T = {\bf I} and \mbox{det}({\bf R}) = 1. Thus, {\bf R} is a proper-orthogonal tensor. The converse of this statement can be found in one of Euler’s theorems [3]. This celebrated theorem is known as Euler’s theorem on the motion of a rigid body:

Every proper-orthogonal tensor is a rotation tensor.

The most complete modern proof of this theorem that we have found is in Guo [4].

We now highlight several unusual properties of Euler’s representation (1). First, notice that

(6)   \begin{equation*} {\bf L}(\phi, \, {\bf r}) = {\bf L}(- \phi, \, - {\bf r}), \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

and thus there are two different representations for the same rotation tensor. Second, as {\bf R} is a proper-orthogonal tensor, its inverse {\bf R}^{-1} and its transpose {\bf R}^T are identical, which leads to two simple representations for these tensors:

(7)   \begin{equation*} {\bf R}^{-1} = {\bf R}^T = {\bf L}(- \phi, \, {\bf r}) = {\bf L}(\phi, \, - {\bf r}). \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

In words, the inverse can be calculated by either reversing the angle of rotation or inverting the axis of rotation. Finally, another peculiarity is that {\bf L}(\phi = 0, \, {\bf r}) = {\bf I} for any unit vector {\bf r}.

Composition of rotations

Suppose we have a rotation through an angle \phi_1 about an axis {\bf r}_1, and we follow this by a rotation through an angle \phi_2 about an axis {\bf r}_2. The tensor

(8)   \begin{equation*} {\bf R}_c = {\bf L}\left(\phi_2, \, {\bf r}_2\right){\bf L}\left(\phi_1, \, {\bf r}_1\right) \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

represents the composite rotation, and it can be shown that {\bf R}_c is a proper-orthogonal tensor. Thus, {\bf R}_c is a rotation tensor, implying that the composition of two rotations is also a rotation. As tensor multiplication is non-commutative, the order in which we consider the composition is important. In general,

(9)   \begin{equation*} {\bf L}\left(\phi_2, \, {\bf r}_2\right){\bf L}\left(\phi_1, \, {\bf r}_1\right) \ne {\bf L}\left(\phi_1, \, {\bf r}_1\right){\bf L}\left(\phi_2, \, {\bf r}_2\right). \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

Exceptions arise when {\bf r}_1 \parallel {\bf r}_2 or one of the angles of rotation is 0. The fact that rotations do not commute plays a major role in the definition of Euler angle sequences.

Euler’s formula

We now examine the action of {\bf R} on a vector {\bf a}. As illustrated in Figure 1, the part of {\bf a} that is parallel to {\bf r} is unaltered by the transformation, whereas the part of {\bf a} that is perpendicular to {\bf r} is rotated counterclockwise about {\bf r} through an angle \phi.

Figure 1. The transformation of a vector  {\bf a} by the rotation tensor  {\bf R} = {\bf L}\left(\phi, \, {\bf r}\right).

To see this result, it is convenient to decompose {\bf a} such that

(10)   \begin{equation*} {\bf a} = {\bf a}_{\perp} + {\bf a}_{\parallel}, \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

where

(11)   \begin{eqnarray*} && {\bf a}_{\perp} = {\bf a} - ({\bf a}\cdot{\bf r}){\bf r} = ({\bf I} - {\bf r}\otimes{\bf r}){\bf a}, \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\ \\ && {\bf a}_{\parallel} = ({\bf a}\cdot{\bf r}){\bf r} = ({\bf r}\otimes{\bf r}){\bf a}. \end{eqnarray*}

With the assistance of this decomposition, we then compute that

(12)   \begin{eqnarray*} {\bf R}{\bf a} \!\!\!\!\! &=& \!\!\!\!\! {\bf L}(\phi, \, {\bf r}){\bf a} \\[0.05in] &=& \!\!\!\!\! \left(\cos(\phi)({\bf I} - {\bf r}\otimes{\bf r}) - \sin(\phi)( \bepsilon {\bf r}) + {\bf r}\otimes{\bf r} \right){\bf a} \\[0.05in] &=& \!\!\!\!\! \cos(\phi)({\bf I} - {\bf r}\otimes{\bf r}){\bf a} - \sin(\phi)( \bepsilon {\bf r}){\bf a} + ({\bf r}\otimes{\bf r}){\bf a} \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\[0.05in] &=& \!\!\!\!\! \cos(\phi)({\bf I} - {\bf r}\otimes{\bf r}){\bf a} + \sin(\phi){\bf r}\times{\bf a} + ({\bf r}\cdot{\bf a}){\bf r} \\[0.05in] &=& \!\!\!\!\! \cos(\phi){\bf a}_\perp + \sin(\phi){\bf r}\times{\bf a}_\perp + {\bf a}_\parallel. \end{eqnarray*}

Realizing that \cos(\phi){\bf a}_\perp + \sin(\phi){\bf r}\times{\bf a}_\perp denotes a rotation of {\bf a}_\perp about {\bf r}, we obtain the desired conclusion. The final expression in (12) for the transformation {\bf R}{\bf a} is known as Euler’s formula.

Calculating the angle and axis of rotation from a given rotation tensor

Given a rotation tensor {\bf R}, it is a standard exercise to solve for the angle of rotation \phi and the axis of rotation {\bf r} associated with this tensor. First, one is normally presented with the matrix components R_{ik} of {\bf R} with respect to a basis, say, \{{\bf p}_1, \, {\bf p}_2, \, {\bf p}_3 \}:

(13)   \begin{equation*} {\bf R} = \sum_{i \, \, = \, 1}^3\sum_{k \, \, = \, 1}^3 R_{ik} {\bf p}_i\otimes{\bf p}_k. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

If we compare (13) with Euler’s representation (1), we find that for {\bf r} = \sum_{i \, \, = \, 1}^3 r_i {\bf p}_i,

(14)   \begin{eqnarray*} R_{ik} \!\!\!\!\! &=& \!\!\!\!\! \left(\left(\cos(\phi)({\bf I} - {\bf r}\otimes{\bf r}) - \sin(\phi)( \bepsilon {\bf r}) + {\bf r}\otimes{\bf r} \right){\bf p}_k\right)\cdot{\bf p}_i \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\[0.10in] &=& \!\!\!\!\! \cos(\phi)\left(\delta_{ik} - r_ir_k\right) + r_i r_k - \sum_{j \, \, = \, 1}^3 \sin(\phi)\altepsilon_{jik}r_j . \end{eqnarray*}

Expand these expressions for the components of {\bf R} and arrange them in a matrix \left [ R_{ik} \right ] to obtain

(15)   \begin{equation*} \left[ \begin{array}{c c c} R_{11} & R_{12} & R_{13} \\ R_{21} & R_{22} & R_{23} \\ R_{31} & R_{32} & R_{33} \\ \end{array} \right] = \cos \left(\phi\right) \left[ \begin{array}{c c c} 1 - r^2_1 & - r_1r_2 & - r_1r_3 \\ - r_1r_2 & 1 - r^2_2 & - r_2r_3 \\ - r_1r_3 & - r_2r_3 & 1 - r^2_3 \\ \end{array} \right] + \left[ \begin{array}{c c c} r^2_1 & r_1r_2 & r_1 r_3 \\ r_1r_2 & r^2_2 & r_2 r_3 \\ r_1r_3 & r_2r_3 & r^2_3 \\ \end{array} \right] + \sin \left(\phi\right) \left[ \begin{array}{c c c} 0 & - r_3 & r_2 \\ r_3 & 0 & - r_1 \\ - r_2 & r_1 & 0 \\ \end{array} \right]. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

To determine the angle of rotation \phi, we calculate the trace of {\bf R}:

(16)   \begin{eqnarray*} \cos(\phi) \!\!\!\!\! &=& \!\!\!\!\! \frac{1}{2} \left( \mbox{tr}\left({\bf R}\right) - 1\right) \\ \\ &=& \!\!\!\!\! \frac{1}{2} \left( R_{11} + R_{22} + R_{33} - 1\right). \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{eqnarray*}

Looking at the skew-symmetric part of {\bf R}, when \phi \ne 0 and \phi \ne \pi rad, we find that the components r_i of the rotation axis \mathbf{r} are given by

(17)   \begin{equation*} \left[ \begin{array}{c} r_1 \\ r_2 \\ r_3 \end{array} \right] = - \frac{1}{2 \sin(\phi)} \left[ \begin{array}{c} R_{23} - R_{32} \\ R_{31} - R_{13} \\ R_{12} - R_{21} \end{array} \right]. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

To verify the computed {\bf r}, we could examine the eigenvectors of {\bf R}: the eigenvector that corresponds to the unit eigenvalue must be parallel to the axis of rotation {\bf r}. If \phi = 0, then {\bf R} = {\bf I} and the axis of rotation is arbitrary: any unit vector can be the rotation axis. The situation is more difficult when \phi = \pi rad. In this case, {\bf R} = 2{\bf r}\otimes{\bf r} - {\bf I} and, instead of using (17), the identity {\bf r}\otimes{\bf r} = \frac{1}{2}\left({\bf R} + {\bf I}\right) is used to calculate {\bf r}.

It is interesting to notice that if {\bf R} = \sum_{i \, \, = \, 1}^3 {\bf t}_i \otimes{\bf p}_i, where \left\{ {\bf t}_1, \, {\bf t}_2, \, {\bf t}_3\right\} is another right-handed orthonormal basis, then {\bf r} has the same components with respect to both sets of basis vectors:

(18)   \begin{equation*} {\bf r} = \sum_{i \, \, = \, 1}^3 r_i {\bf p}_i = \sum_{i \, \, = \, 1}^3 r_i {\bf t}_i. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

The proof of this result is based on the observation that {\bf R} has the same components R_{ik} with respect to the bases \left\{ {\bf p}_1, \, {\bf p}_2, \, {\bf p}_3\right\} and \left\{ {\bf t}_1, \, {\bf t}_2, \, {\bf t}_3\right\}. That is,

(19)   \begin{equation*} {\bf R} = \sum_{i \, \, = \, 1}^3\sum_{k \, \, = \, 1}^3 R_{ik} {\bf p}_i\otimes{\bf p}_k = \sum_{i \, \, = \, 1}^3\sum_{k \, \, = \, 1}^3 R_{ik} {\bf t}_i\otimes{\bf t}_k. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

An example

Suppose the components of a rotation tensor {\bf R} are given by

(20)   \begin{equation*} \left[ \begin{array}{c c c} R_{11} & R_{12} & R_{13} \\ R_{21} & R_{22} & R_{23} \\ R_{31} & R_{32} & R_{33} \\ \end{array} \right] = \left[ \begin{array}{c c c } 0.835959 & -0.283542 & -0.469869 \\ 0.271321 & 0.957764 & -0.0952472 \\ 0.47703 & -0.0478627 & 0.877583 \end{array} \right]. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

We can compute the angle of rotation \phi of this tensor by using (16):

(21)   \begin{equation*} \cos(\phi) = \frac{1}{2} \left(0.835959 + 0.957764 + 0.877583 - 1\right). \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

That is, \phi = 33.3161^\circ. The axis of rotation {\bf r} is then calculated from (17):

(22)   \begin{equation*} \left[ \begin{array}{c} r_1 \\ r_2 \\ r_3 \end{array} \right] = - \frac{1}{2 \sin(33.3161^\circ)} \left[ \begin{array}{c} -0.0952472 - (-0.0478627) \\ 0.47703 - (-0.469869) \\ -0.283542 - 0.271321 \end{array} \right] , \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

which yields

(23)   \begin{eqnarray*} {\bf r} \!\!\!\!\! &=& \!\!\!\!\! 0.043134 {\bf p}_1 -0.861981{\bf p}_2 + 0.505103 {\bf p}_3 \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\[0.05in] &=& \!\!\!\!\! 0.043134 {\bf t}_1 -0.861981{\bf t}_2 + 0.505103 {\bf t}_3. \end{eqnarray*}

In writing this result, we are emphasizing that the components of {\bf r} in the bases \left\{ {\bf p}_1, \, {\bf p}_2, \, {\bf p}_3\right\} and \left\{ {\bf t}_1, \, {\bf t}_2, \, {\bf t}_3\right\} are identical. The rotation considered in this example is animated in Figure 2.

Figure 2. Animation of a counterclockwise rotation of 33.3161 ^{\circ} about the axis  {\bf r} = 0.043134 {\bf p}_1 -0.861981{\bf p}_2 + 0.505103 {\bf p}_3.

The associated angular velocity vectors

Given Euler’s representation (1), we assume that the rotation tensor is a function of time: {\bf R} = {\bf R}(t). This implies that, in general, the angle and axis of rotation also vary with time: \phi = \phi(t) and {\bf r} = {\bf r}(t). We now seek to establish representations for the angular velocity vector {\bomega}_{\bf R} and a related vector {\bomega}_{0_{\bf R}}.

As a preliminary result, we note that {\bf r}\cdot\dot{\bf r} = 0 because {\bf r} is a unit vector. In addition, \dot{\bepsilon} = {\bf O} and \dot{\bf I} = {\bf O}. Thus, when we differentiate Euler’s representation (1), we find that

(24)   \begin{eqnarray*} \dot{\bf R} \!\!\!\!\! &=& \!\!\!\!\! - \dot{\phi}\sin(\phi)({\bf I} - {\bf r}\otimes{\bf r}) - \dot{\phi}\cos(\phi)( \bepsilon {\bf r}) + (1 - \cos(\phi))(\dot{\bf r}\otimes{\bf r} + {\bf r}\otimes\dot{\bf r}) \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \\[0.075in] && \!\!\!\!\! - \sin(\phi)( \bepsilon \dot{\bf r}). \end{eqnarray*}

To proceed further, consider a right-handed orthonormal basis \{ {\bf t}_1, \, {\bf t}_2, \, {\bf t}_3 \}, and suppose the rotation axis {\bf r} = {\bf t}_3 at a given instant in time. Then, at the same instant in time,

(25)   \begin{eqnarray*} && {\bepsilon}{\bf r} = {\bf t}_1\otimes{\bf t}_2 - {\bf t}_2\otimes{\bf t}_1 , \\[0.15in] && \dot{\bf r} = a {\bf t}_1 + b {\bf t}_2, \\[0.15in] && {\bf r}\times\dot{\bf r} = a {\bf t}_2 - b {\bf t}_1, \\[0.15in] && {\bepsilon}\dot{\bf r} = a( {\bf t}_2\otimes{\bf t}_3 - {\bf t}_3\otimes{\bf t}_2 ) + b({\bf t}_3\otimes{\bf t}_1 - {\bf t}_1\otimes{\bf t}_3). \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{eqnarray*}

Using the expressions in (25) along with some manipulations, we can show that the angular velocity tensor has the representation

(26)   \begin{equation*} {\bOmega}_{\bf R} = \dot{\bf R} {\bf R}^T = - \dot{\phi} ( {\bepsilon}{\bf r} ) - \sin(\phi) ( {\bepsilon}\dot{\bf r} ) - (1 - \cos(\phi)) \left ( {\bepsilon}({\bf r}\times\dot{\bf r}) \right ) . \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

Therefore, the associated angular velocity vector is

(27)   \begin{equation*} {\bomega}_{\bf R} = \dot{\phi}{\bf r} + \sin(\phi)\dot{\bf r} + (1 - \cos(\phi)){\bf r}\times\dot{\bf r}. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

If {\bf r} is constant, then the angular velocity vector simplifies considerably. It is interesting to note that a constant \bomega_{\bf R} does not necessarily imply a constant {\bf r}. However, it is usually possible to choose a fixed basis \left\{{\bf p}_1, \, {\bf p}_2, \, {\bf p}_3\right\}, where {\bf R} = \sum_{k \, \, = \, 1}^3 {\bf t}_k\otimes{\bf p}_k, so that a constant angular velocity implies a constant \dot{\phi} and a constant {\bf r}.

For completeness, we note that a different angular velocity \bomega_{0_{\bf R}} can be defined as the axial vector of {\bf R}^T\dot{\bf R}. It can be shown that \bomega_{\bf R} and \bomega_{0_{\bf R}} are related by

(28)   \begin{equation*} \bomega_{0_{\bf R}} = {\bf R}^T \bomega_{\bf R} . \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

With the assistance of the identities {\bf R}{\bf r} = {\bf r} and {\bf R}^T\left({\bf a}\times{\bf b}\right) = \left({\bf R}^T{\bf a}\times{\bf R}^T{\bf b}\right) and the representation (27), it follows that

(29)   \begin{equation*} {\bomega}_{0_{\bf R}} = \dot{\phi}{\bf r} + \sin(\phi)\dot{\bf r} - (1 - \cos(\phi)){\bf r}\times\dot{\bf r}. \hspace{1in} \scalebox{0.001}{\textrm{\textcolor{white}{.}}} \end{equation*}

As discussed in [5, 6], this representation is convenient to use when computing Lagrange’s equations of motion for rigid bodies.

Downloads

The MATLAB code used to generate the animation in Figure 2 is available here. The user supplies a 3 \times 3 proper-orthogonal matrix \mathsf{R} = \left [ R_{ik} \right ], and the script determines the corresponding angle and axis of rotation. If the provided matrix \mathsf{R} is not proper orthogonal, then the script returns an error message and aborts operation.

References

    1. Euler, L., Nova methodus motum corporum rigidorum determinandi, Novi Commentari Academiae Scientiarum Imperalis Petropolitanae 20 208–238 (1775). The title translates to “A new method for generating the motion of a rigid body.” Reprinted in pp. 99-125 of Euler, L., Leonhardi Euleri Opera Omnia, II, Vol. 9, Orell Füssli, Zürich (1968). Edited by C. Blanc.
    1. Wilson, E. B., Vector Analysis: A Text-Book for the Use of Students of Mathematics and Physics. Founded upon the Lectures of J. Willard Gibbs, 7th printing, Yale University Press, New Haven, CT (1931).
    1. Euler, L., Formulae generales pro translatione quacunque corporum rigidorum, Novi Commentari Academiae Scientiarum Imperalis Petropolitanae 20 189–207 (1775). The title translates to “General formulas for the translation of arbitrary rigid bodies.” Reprinted in pp. 85–98 of Euler, L., Leonhardi Euleri Opera Omnia, II, Vol. 9, Orell Füssli, Zürich (1968). Edited by C. Blanc.
    1. Guo, Z.-H., Representations of orthogonal tensors, Solid Mechanics Archives 6 451–466 (1981).
    1. O’Reilly, O. M., Intermediate Dynamics for Engineers: A Unified Treatment of Newton-Euler and Lagrangian Mechanics, Cambridge University Press, Cambridge (2008).
  1. Faruk Senan, A. F., and O’Reilly, O. M., On the use of quaternions and Euler-Rodrigues symmetric parameters with moments and moment potential, International Journal of Engineering Science 47(4) 595-609 (2009).