In this note, I investigate the rotation matrix that relates the image of a point when it is rotated by an angle about an axis that passes through the origin.
Without loss of generality, we assume that the direction vector of the axis is a unit vector.
Now we decompose the vector , into two components, one along the rotation axis, and one orthogonal to it.
The component along the rotation axis is given by
(remember that is a unit vector so,
And, the orthogonal component is,
In matrix-vector notation, if all vectors are (3 x 1) column vectors, then
Now when the component undergoes rotation, it is unchanged.
It is that gets rotated about the axis . To write an expression for the image of undergoing a rotation by , we need the perpendicular vector to both and , and is at degrees counter-clockwise from . This vector is
because since the two vectors are collinear.
Noe that because is orthogonal to and is a unit vector.
So now the plane of rotation is spanned by the vectors and , both equal in length , and that length is
With that in mind, and since the point describes a circle in the plane of rotation, then
this expresses the rotation of the normal component of around the axis .
Therefore, the rotated vector is
Using the expressions derived above, we arrive at
where is a 3 x 3 skew-symmetric matrix given by
(that is, the vector cross product , can be expressed as a matrix-vector multiplication)
and hence, finally,
is the desired rotation matrix.
What if the axis of rotation did not pass through the origin, but passed though a point ?
In this case, we can translate (shift) the origin of the reference frame to the point . Since is on the axis of rotation it is unaffected by the rotation, and its image is itself. Then, we apply our result to the vector which joins the axis of rotation at the point .