Rotations in two dimensions
See: rotation in
2d and Wikipedia
on rotation matrices.
In two dimensions, rotating a vector \(\theta\) around the origin can be
expressed as a 2 by 2 transformation matrix:
\[\begin{split}
R(\theta) = \begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}
\end{split}\]
This matrix rotates column vectors by matrix multiplication on the left:
\[\begin{split}
\begin{bmatrix}
x' \\
y' \\
\end{bmatrix} = \begin{bmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{bmatrix}\begin{bmatrix}
x \\
y \\
\end{bmatrix}
\end{split}\]
The coordinates \((x',y')\) of the point \((x,y)\) after rotation are:
\[\begin{split}
x' = x \cos \theta - y \sin \theta \\
y' = x \sin \theta + y \cos \theta
\end{split}\]
See [rotation in 2D] for a visual proof.
Rotations in three dimensions
Rotations in three dimensions extend simply from two dimensions.
Consider a [right-handed] set of x, y, z axes, maybe forming the x axis with
your right thumb, the y axis with your index finger, and the z axis with your
middle finger. Now look down the z axis, from positive z toward negative z. You
see the x and y axes pointing right and up respectively, on a plane in front of
you. A rotation around z leaves z unchanged, but changes x and y according to
the 2D rotation formula above:
\[\begin{split}
R_z(\theta) =
\begin{bmatrix}
\cos \theta & -\sin \theta & 0 \\
\sin \theta & \cos \theta & 0 \\
0 & 0 & 1 \\
\end{bmatrix}
\end{split}\]
For a rotation around x, we look down from positive x to the y and z axes,
pointing right and up, respectively. y replaces x in the 2D formula, and z
replaces y, to give:
\[\begin{split}
y' = y \cos \theta - z \sin \theta \\
z' = y \sin \theta + z \cos \theta
\end{split}\]
\[\begin{split}
R_x(\theta) = \begin{bmatrix}
1 & 0 & 0 \\
0 & \cos \theta & -\sin \theta \\[3pt]
0 & \sin \theta & \cos \theta \\[3pt]
\end{bmatrix}
\end{split}\]
Now consider a rotation around the y axis. We look from positive y down the
y axis to the z and x axes, pointing right and up respectively. \(z\) replaces
\(x\) in the 2D formula, and \(x\) replaces \(y\):
\[\begin{split}
z' = z \cos \theta - x \sin \theta \\
x' = z \sin \theta + x \cos \theta
\end{split}\]
\[\begin{split}
R_y(\theta) = \begin{bmatrix}
\cos \theta & 0 & \sin \theta \\[3pt]
0 & 1 & 0 \\[3pt]
-\sin \theta & 0 & \cos \theta \\
\end{bmatrix}
\end{split}\]
We can combine rotations with matrix multiplication. For example, here is an
rotation of \(gamma\) radians around the x axis:
\[\begin{split}
\begin{bmatrix}
x'\\
y'\\
z'\\
\end{bmatrix} =
\begin{bmatrix}
1 & 0 & 0 \\
0 & \cos(\gamma) & -\sin(\gamma) \\
0 & \sin(\gamma) & \cos(\gamma) \\
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
z\\
\end{bmatrix}
\end{split}\]
We could then apply a rotation of \(phi\) radians around the y axis:
\[\begin{split}
\begin{bmatrix}
x''\\
y''\\
z''\\
\end{bmatrix} =
\begin{bmatrix}
\cos(\phi) & 0 & \sin(\phi) \\
0 & 1 & 0 \\
-\sin(\phi) & 0 & \cos(\phi) \\
\end{bmatrix}
\begin{bmatrix}
x'\\
j'\\
k'\\
\end{bmatrix}
\end{split}\]
We could also write the combined rotation as:
\[\begin{split}
\begin{bmatrix}
x''\\
y''\\
z''\\
\end{bmatrix} =
\begin{bmatrix}
\cos(\phi) & 0 & \sin(\phi) \\
0 & 1 & 0 \\
-\sin(\phi) & 0 & \cos(\phi) \\
\end{bmatrix}
\begin{bmatrix}
1 & 0 & 0 \\
0 & \cos(\gamma) & -\sin(\gamma) \\
0 & \sin(\gamma) & \cos(\gamma) \\
\end{bmatrix}
\begin{bmatrix}
x\\
y\\
z\\
\end{bmatrix}
\end{split}\]
Because matrix multiplication is associative:
\[\begin{split}
\mathbf{Q} = \begin{bmatrix}
1 & 0 & 0 \\
0 & \cos(\gamma) & -\sin(\gamma) \\
0 & \sin(\gamma) & \cos(\gamma) \\
\end{bmatrix}
\end{split}\]
\[\begin{split}
\mathbf{P} = \begin{bmatrix}
\cos(\phi) & 0 & \sin(\phi) \\
0 & 1 & 0 \\
-\sin(\phi) & 0 & \cos(\phi) \\
\end{bmatrix}
\end{split}\]
\[
\mathbf{M} = \mathbf{P} \cdot \mathbf{Q}
\]
\[\begin{split}
\begin{bmatrix}
x''\\
y''\\
z''\\
\end{bmatrix} =
\mathbf{M}
\begin{bmatrix}
x\\
y\\
z\\
\end{bmatrix}
\end{split}\]
\(\mathbf{M}\) is the rotation matrix that encodes a rotation by
\(\gamma\) radians around the x axis followed by a rotation by
\(\phi\) radians around the y axis. We know that the y axis rotation
follows the x axis rotation because matrix multiplication operates from right
to left.