<?xml version="1.0" encoding="UTF-8"?>

<record version="1" id="1122">
 <title>Euler angles: elementary axis rotations and passive rotation matrices</title>
 <name>EulerAnglesElementaryAxisRotationsAndPassiveRotationMatrices</name>
 <created>2026-08-28 22:31:47</created>
 <modified>2026-08-28 22:31:47</modified>
 <type>Definition</type>
 <creator id="1" name="bloftin"/>
 <modifier id="1" name="bloftin"/>
 <author id="1" name="bloftin"/>
 <classification>
	<category scheme="pacs" code="02.40.Yy"/>
	<category scheme="pacs" code="45.40.-f"/>
	<category scheme="pacs" code="02.10.Ud"/>
 </classification>
 <defines>
	<concept>Euler angle sequence</concept>
 </defines>
 <related>
	<object name="AxisAngleRepresentationAndUnitQuaternion"/>
 </related>
 <keywords>
	<term>Euler angles</term>
	<term>passive rotation matrix</term>
	<term>direction cosine</term>
	<term>matrix</term>
	<term>elementary rotations</term>
	<term>coordinate transformation</term>
	<term>intrinsic rotation</term>
 </keywords>
 <preamble>% this is the default PhysicsLibrary preamble.  as your knowledge
% of TeX increases, you will probably want to edit this, but
% it should be fine as is for beginners.

% almost certainly you want these
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsfonts}

% used for TeXing text within eps files
%\usepackage{psfrag}
% need this for including graphics (\includegraphics).
% If you use \includegraphics{figure} with no file extension, PhysicsLibrary
% will prefer figure.png before falling back to figure.eps.
\usepackage{graphicx}
\DeclareGraphicsExtensions{.png,.jpg,.jpeg,.pdf,.eps}
% for neatly defining theorems and propositions
%\usepackage{amsthm}
% making logically defined graphics
%\usepackage{xypic}

% there are many more packages, add them here as you need them

% define commands here</preamble>
 <content>\section*{Euler Angles: Elementary Axis Rotations and Passive Rotation Matrices}

Every Euler angle sequence is built from three elementary coordinate
transformations about the coordinate axes.

For that reason, the most efficient way to understand Euler angle matrices is
to understand the three one axis passive transformations first.

This article derives the passive elementary matrices
\[
C_1(\lambda),\qquad
C_2(\lambda),\qquad
C_3(\lambda),
\]
interprets their signs geometrically, and records the diagnostic tests that
make later Euler sequence formulas easier to verify.

\section{Convention and notation}

PhysicsLibrary uses right handed orthonormal coordinate frames and passive
coordinate transformations.

If the same physical vector has coordinate columns
${}^{A}\mathbf v$ and ${}^{B}\mathbf v$ in frames $A$ and $B$, then

\begin{equation}
{}^{B}\mathbf v
=
{}^{B}C_A
\,{}^{A}\mathbf v.
\end{equation}

A passive transformation therefore keeps the physical vector fixed while the
coordinate frame is rotated.

A positive frame rotation follows the right hand rule.

The three elementary passive coordinate transformations are denoted

\begin{equation}
C_1(\lambda),\qquad
C_2(\lambda),\qquad
C_3(\lambda),
\end{equation}

where $\lambda$ is the rotation angle and the subscript $1,2,3$ refers to the
$x,y,z$ axis respectively.

\section{Why elementary matrices matter}

A general intrinsic Euler sequence is composed from the elementary
transformations.

For intrinsic $i$-$j$-$k$ with sequence angles
$(\alpha,\beta,\gamma)$,

\begin{equation}
{}^{B}C_A
=
C_k(\gamma)
C_j(\beta)
C_i(\alpha).
\end{equation}

Thus every Euler angle formula is ultimately a product of the three matrices
derived in this article.

If their signs are understood at the elementary level, later formulas become
much easier to trust and debug.

\section{What changes under a passive rotation}

A passive frame rotation changes coordinates, not the physical vector.

Suppose frame $B$ is obtained from frame $A$ by a positive rotation of the
coordinate axes through angle $\lambda$ about one of the coordinate axes.

Then a fixed physical vector has one coordinate column in frame $A$ and a
different coordinate column in frame $B$.

The unchanged geometry and changed coordinates are related by

\begin{equation}
{}^{B}\mathbf v
=
C_i(\lambda)
{}^{A}\mathbf v.
\end{equation}

This passive viewpoint is the key sign convention.

For example, if the coordinate axes rotate positively about $+z$, then a
physical vector that originally had coordinates
\[
{}^{A}\mathbf v
=
\begin{bmatrix}
1\\0\\0
\end{bmatrix}
\]
will generally not retain those same coordinates in the rotated frame.

\section{Derivation of the rotation about axis 1}

Let frame $B$ be obtained from frame $A$ by a positive frame rotation through
angle $\lambda$ about axis $1$, the $x$ axis.

The $x$ axis is unchanged by this rotation, while the $y$ and $z$ axes rotate
in the $yz$ plane.

\begin{center}
\includegraphics[width=0.78\textwidth]{EA02_passive_rotation_about_x_axis.png}

\vspace{0.5em}

\textbf{Figure.}
Passive frame rotation about axis $1$.  The $x$ axis is common to both frames,
while the $y$ and $z$ axes of frame $B$ are obtained by a positive frame
rotation through angle $\lambda$ about $+x$.  The angle label is placed between
the pre-rotation and post-rotation axes to emphasize that $\lambda$ is the
geometric separation of those axes.  All axes share one common origin.
\end{center}

Let
\[
{}^{A}\mathbf v
=
\begin{bmatrix}
v_1\\v_2\\v_3
\end{bmatrix}
\]
and
\[
{}^{B}\mathbf v
=
\begin{bmatrix}
u_1\\u_2\\u_3
\end{bmatrix}.
\]

Under the passive rotation about axis $1$,

\begin{equation}
u_1=v_1,
\end{equation}

because the first axis is unchanged.

In the $yz$ plane, the coordinate pair transforms as a two dimensional passive
rotation:

\begin{equation}
u_2=\cos\lambda\,v_2+\sin\lambda\,v_3,
\end{equation}

\begin{equation}
u_3=-\sin\lambda\,v_2+\cos\lambda\,v_3.
\end{equation}

Collecting terms gives

\begin{equation}
\begin{bmatrix}
u_1\\u_2\\u_3
\end{bmatrix}
=
\begin{bmatrix}
1&amp;0&amp;0\\
0&amp;\cos\lambda&amp;\sin\lambda\\
0&amp;-\sin\lambda&amp;\cos\lambda
\end{bmatrix}
\begin{bmatrix}
v_1\\v_2\\v_3
\end{bmatrix}.
\end{equation}

Therefore

\begin{equation}
C_1(\lambda)
=
\begin{bmatrix}
1&amp;0&amp;0\\
0&amp;\cos\lambda&amp;\sin\lambda\\
0&amp;-\sin\lambda&amp;\cos\lambda
\end{bmatrix}.
\end{equation}

\subsection*{A \(90^\circ\) diagnostic for \(C_1\)}

At $\lambda=\pi/2$,

\begin{equation}
C_1\left(\frac{\pi}{2}\right)
=
\begin{bmatrix}
1&amp;0&amp;0\\
0&amp;0&amp;1\\
0&amp;-1&amp;0
\end{bmatrix}.
\end{equation}

If a fixed physical vector has initial coordinates
\[
{}^{A}\mathbf v
=
\begin{bmatrix}
0\\1\\0
\end{bmatrix},
\]
then

\begin{equation}
{}^{B}\mathbf v
=
C_1\left(\frac{\pi}{2}\right)
\begin{bmatrix}
0\\1\\0
\end{bmatrix}
=
\begin{bmatrix}
0\\0\\-1
\end{bmatrix}.
\end{equation}

This sign pattern agrees with the passive interpretation: the vector did not
move, but the coordinate axes did.

\section{Derivation of the rotation about axis 2}

Now let frame $B$ be obtained from frame $A$ by a positive frame rotation
through angle $\lambda$ about axis $2$, the $y$ axis.

The $y$ axis is unchanged, while the $x$ and $z$ axes rotate in the $xz$
plane.

\begin{center}
\includegraphics[width=0.78\textwidth]{EA02_passive_rotation_about_y_axis.png}

\vspace{0.5em}

\textbf{Figure.}
Passive frame rotation about axis $2$.  The $y$ axis is common to both frames,
while the $x$ and $z$ axes of frame $B$ result from a positive frame rotation
through angle $\lambda$ about $+y$.  The marked angle $\lambda$ is drawn
between corresponding old and new axes.
\end{center}

Again write

\[
{}^{A}\mathbf v
=
\begin{bmatrix}
v_1\\v_2\\v_3
\end{bmatrix},
\qquad
{}^{B}\mathbf v
=
\begin{bmatrix}
u_1\\u_2\\u_3
\end{bmatrix}.
\]

Because the second axis is unchanged,

\begin{equation}
u_2=v_2.
\end{equation}

The $xz$ coordinates transform as

\begin{equation}
u_1=\cos\lambda\,v_1-\sin\lambda\,v_3,
\end{equation}

\begin{equation}
u_3=\sin\lambda\,v_1+\cos\lambda\,v_3.
\end{equation}

Hence

\begin{equation}
\begin{bmatrix}
u_1\\u_2\\u_3
\end{bmatrix}
=
\begin{bmatrix}
\cos\lambda&amp;0&amp;-\sin\lambda\\
0&amp;1&amp;0\\
\sin\lambda&amp;0&amp;\cos\lambda
\end{bmatrix}
\begin{bmatrix}
v_1\\v_2\\v_3
\end{bmatrix},
\end{equation}

so

\begin{equation}
C_2(\lambda)
=
\begin{bmatrix}
\cos\lambda&amp;0&amp;-\sin\lambda\\
0&amp;1&amp;0\\
\sin\lambda&amp;0&amp;\cos\lambda
\end{bmatrix}.
\end{equation}

\subsection*{A \(90^\circ\) diagnostic for \(C_2\)}

At $\lambda=\pi/2$,

\begin{equation}
C_2\left(\frac{\pi}{2}\right)
=
\begin{bmatrix}
0&amp;0&amp;-1\\
0&amp;1&amp;0\\
1&amp;0&amp;0
\end{bmatrix}.
\end{equation}

If

\[
{}^{A}\mathbf v
=
\begin{bmatrix}
0\\0\\1
\end{bmatrix},
\]

then

\begin{equation}
{}^{B}\mathbf v
=
C_2\left(\frac{\pi}{2}\right)
\begin{bmatrix}
0\\0\\1
\end{bmatrix}
=
\begin{bmatrix}
-1\\0\\0
\end{bmatrix}.
\end{equation}

\section{Derivation of the rotation about axis 3}

Finally let frame $B$ be obtained from frame $A$ by a positive frame rotation
through angle $\lambda$ about axis $3$, the $z$ axis.

The $z$ axis is unchanged, while the $x$ and $y$ axes rotate in the $xy$
plane.

\begin{center}
\includegraphics[width=0.78\textwidth]{EA02_passive_rotation_about_z_axis.png}

\vspace{0.5em}

\textbf{Figure.}
Passive frame rotation about axis $3$.  The $z$ axis is common to both frames,
while the $x$ and $y$ axes of frame $B$ are produced by a positive frame
rotation through angle $\lambda$ about $+z$.  The angle marker is drawn
between the old and new $x$ axes to emphasize the sign convention.
\end{center}

With the same notation,

\begin{equation}
u_3=v_3,
\end{equation}

and the $xy$ coordinates transform as

\begin{equation}
u_1=\cos\lambda\,v_1+\sin\lambda\,v_2,
\end{equation}

\begin{equation}
u_2=-\sin\lambda\,v_1+\cos\lambda\,v_2.
\end{equation}

Therefore

\begin{equation}
\begin{bmatrix}
u_1\\u_2\\u_3
\end{bmatrix}
=
\begin{bmatrix}
\cos\lambda&amp;\sin\lambda&amp;0\\
-\sin\lambda&amp;\cos\lambda&amp;0\\
0&amp;0&amp;1
\end{bmatrix}
\begin{bmatrix}
v_1\\v_2\\v_3
\end{bmatrix},
\end{equation}

so

\begin{equation}
C_3(\lambda)
=
\begin{bmatrix}
\cos\lambda&amp;\sin\lambda&amp;0\\
-\sin\lambda&amp;\cos\lambda&amp;0\\
0&amp;0&amp;1
\end{bmatrix}.
\end{equation}

\subsection*{A \(90^\circ\) diagnostic for \(C_3\)}

At $\lambda=\pi/2$,

\begin{equation}
C_3\left(\frac{\pi}{2}\right)
=
\begin{bmatrix}
0&amp;1&amp;0\\
-1&amp;0&amp;0\\
0&amp;0&amp;1
\end{bmatrix}.
\end{equation}

If

\[
{}^{A}\mathbf v
=
\begin{bmatrix}
1\\0\\0
\end{bmatrix},
\]

then

\begin{equation}
{}^{B}\mathbf v
=
C_3\left(\frac{\pi}{2}\right)
\begin{bmatrix}
1\\0\\0
\end{bmatrix}
=
\begin{bmatrix}
0\\-1\\0
\end{bmatrix}.
\end{equation}

This example is often the quickest sign check for the passive convention.

\section{Orthogonality, inverse, and determinant}

Each elementary matrix is an orthogonal matrix with determinant $+1$.

For each $i=1,2,3$,

\begin{equation}
C_i(\lambda)^T C_i(\lambda)=I,
\end{equation}

\begin{equation}
\det C_i(\lambda)=1,
\end{equation}

and therefore

\begin{equation}
C_i(\lambda)^{-1}
=
C_i(\lambda)^T.
\end{equation}

Because changing the sign of the angle reverses the frame rotation,

\begin{equation}
C_i(-\lambda)
=
C_i(\lambda)^T
=
C_i(\lambda)^{-1}.
\end{equation}

This identity is one of the most useful algebraic checks in Euler angle work.

\section{Relation to active rotation matrices}

The passive coordinate transformation and the active vector rotation for the
same positive geometric angle are transposes of one another.

If $R_i(\lambda)$ denotes the active rotation matrix, then

\begin{equation}
R_i(\lambda)
=
C_i(\lambda)^T
=
C_i(-\lambda).
\end{equation}

Thus many sign disagreements found in textbooks are actually differences
between active and passive conventions.

The geometry is the same; the map interpretation is different.

\section{Rows and columns of a passive direction cosine matrix}

For a passive direction cosine matrix,

\begin{equation}
{}^{B}C_A
=
\begin{bmatrix}
\vert&amp;\vert&amp;\vert\\
{}^{B}\hat{\mathbf a}_1&amp;{}^{B}\hat{\mathbf a}_2&amp;{}^{B}\hat{\mathbf a}_3\\
\vert&amp;\vert&amp;\vert
\end{bmatrix},
\end{equation}

so the columns are the coordinates of the basis vectors of frame $A$
expressed in frame $B$.

Equivalently, the entries may be written as direction cosines

\begin{equation}
({}^{B}C_A)_{ij}
=
\hat{\mathbf b}_i\cdot\hat{\mathbf a}_j.
\end{equation}

Therefore the rows are the components of the basis vectors of frame $B$
measured along the axes of frame $A$.

Both viewpoints are valid and useful.

\section{Small angle forms}

For small $|\lambda|$,

\[
\cos\lambda \approx 1,
\qquad
\sin\lambda \approx \lambda.
\]

Therefore

\begin{equation}
C_1(\lambda)
\approx
\begin{bmatrix}
1&amp;0&amp;0\\
0&amp;1&amp;\lambda\\
0&amp;-\lambda&amp;1
\end{bmatrix},
\end{equation}

\begin{equation}
C_2(\lambda)
\approx
\begin{bmatrix}
1&amp;0&amp;-\lambda\\
0&amp;1&amp;0\\
\lambda&amp;0&amp;1
\end{bmatrix},
\end{equation}

and

\begin{equation}
C_3(\lambda)
\approx
\begin{bmatrix}
1&amp;\lambda&amp;0\\
-\lambda&amp;1&amp;0\\
0&amp;0&amp;1
\end{bmatrix}.
\end{equation}

These first-order forms are useful in error analysis and linearized attitude
models, but they should not be mistaken for exact finite rotation matrices.

\section{How the elementary matrices build Euler sequences}

Because a generic intrinsic sequence is

\[
{}^{B}C_A
=
C_k(\gamma)C_j(\beta)C_i(\alpha),
\]

every Euler matrix is formed by multiplying the elementary matrices in the
appropriate order.

For example, the PhysicsLibrary passive intrinsic $3$-$2$-$1$ yaw pitch roll
map is

\begin{equation}
{}^{B}C_A
=
C_1(\phi)
C_2(\theta)
C_3(\psi).
\end{equation}

The rightmost factor acts first on a coordinate column.

Thus the first step is a positive frame rotation about axis $3$ through yaw
$\psi$, the second step is a positive frame rotation about the current axis $2$
through pitch $\theta$, and the third step is a positive frame rotation about
the current axis $1$ through roll $\phi$.

\section{A compact verification battery}

Any derived Euler matrix should agree with the elementary matrices under
appropriate specializations.

Useful tests include:

\begin{enumerate}

\item set all angles to zero and verify the identity matrix;

\item set two angles to zero and verify the correct elementary matrix;

\item test the $90^\circ$ cases recorded above;

\item verify orthogonality:
\[
CC^T=I;
\]

\item verify proper determinant:
\[
\det C=1;
\]

\item verify the reverse map:
\[
{}^{A}C_B
=
({}^{B}C_A)^T;
\]

\item compare with the corresponding passive quaternion relation when a
quaternion representation is available.

\end{enumerate}

These checks are simple enough to do by hand and strong enough to catch most
sign, order, and convention mistakes.

\section{Summary}

The three elementary passive coordinate transformations are

\begin{equation}
C_1(\lambda)
=
\begin{bmatrix}
1&amp;0&amp;0\\
0&amp;\cos\lambda&amp;\sin\lambda\\
0&amp;-\sin\lambda&amp;\cos\lambda
\end{bmatrix},
\end{equation}

\begin{equation}
C_2(\lambda)
=
\begin{bmatrix}
\cos\lambda&amp;0&amp;-\sin\lambda\\
0&amp;1&amp;0\\
\sin\lambda&amp;0&amp;\cos\lambda
\end{bmatrix},
\end{equation}

and

\begin{equation}
C_3(\lambda)
=
\begin{bmatrix}
\cos\lambda&amp;\sin\lambda&amp;0\\
-\sin\lambda&amp;\cos\lambda&amp;0\\
0&amp;0&amp;1
\end{bmatrix}.
\end{equation}

They are orthogonal, proper, and related to their active counterparts by
transpose.

Every intrinsic Euler angle matrix in the PhysicsLibrary convention is built
from these elementary factors according to

\begin{equation}
{}^{B}C_A
=
C_k(\gamma)
C_j(\beta)
C_i(\alpha).
\end{equation}

Understanding these three matrices is therefore the key first step toward
understanding every later Euler sequence formula.

The next companion article,
\emph{Elementary axis rotations and passive rotation matrices: examples,
exercises, and solutions},
will reinforce these results with direct computations and verification checks.

\section{References and further reading}

Henderson is a classic engineering source for Euler angle transformations,
quaternions, and direction cosine matrices.

Moore develops passive coordinate transformations and orientation of reference
frames in a modern open text.

Diebel gives a compact comparative overview of Euler angles, rotation matrices,
quaternions, and rotation vectors.

\begin{thebibliography}{9}

\bibitem{Henderson1977}
D. M. Henderson,
\emph{Euler Angles, Quaternions, and Transformation Matrices:
Working Relationships},
JSC-12960,
NASA Johnson Space Center,
1977.
\PMlinkexternal{NASA Technical Reports Server}
{https://ntrs.nasa.gov/citations/19770024290}

\bibitem{Moore2026}
J. K. Moore,
\emph{Learn Multibody Dynamics},
chapter ``Orientation of Reference Frames,''
2026 edition.
Licensed CC BY 4.0.
\PMlinkexternal{Orientation of Reference Frames}
{https://moorepants.github.io/learn-multibody-dynamics/orientation.html}

\bibitem{Diebel2006}
J. Diebel,
``Representing Attitude:
Euler Angles, Unit Quaternions, and Rotation Vectors,''
Stanford University,
2006.
\PMlinkexternal{Online PDF}
{https://www.astro.rug.nl/software/kapteyn-beta/_downloads/attitude.pdf}

\end{thebibliography}

\section*{License}

Unless otherwise noted, this PhysicsLibrary entry is intended for release
under the Creative Commons Attribution ShareAlike 4.0 International license.</content>
</record>
