Overview
An axis in space is specified by a point
and a vector direction
. Suppose that we wish to rotate an object about this arbitrary axis.
We know how to do this in the cases that the axis is the x axis, the y axis, or the z axis in the Cartesian frame (these were just generalizations of the two-dimensional rotations), but the general case is more difficult. In these notes we present a solution to this problem that utilizes both translation and the above rotation matrices to accomplish this task. (One can also approach this problem through the use of frame-to-frame-conversion transformations.)
For a pdf version of these notes look
here.
Developing the General Rotation Matrix
First assume that the axis of rotation can be specified in terms of
Cartesian coordinates, i.e. can be
represented by the point
and the vector
. Then a rotation of
degrees about this axis
can be defined by concatenating the following transformations
where
,
and then use an
x-axis rotation,
of
, to rotate the vector until it
coincides with the
axis.
where
then by a rotation
about
the y axis
and finally using the translation,
to translate
back to the original axis.
What if the Axis was Specified in a Local Frame?
In this case, we just convert the coordinates of the point
and
vector
defining the axis to Cartesian coordinates using the
frame-to-Cartesian-frame
transformation, do the above operations, and then use the
Cartesian-frame-to-frame
to convert the resulting coordinates back to the local system.
Summary
We have developed a simple method using only basic transformations
by which general
rotation can be accomplished. It utilizes
translation
and
the basic rotations about
the x axis,
the y axis,
and
the z axis
to accomplish this task. This individual matrices specified may be
multiplied together to give one
matrix that represents
the general rotation.
Return to
the Graphics Notes Home Page
Return
to the Geometric Modeling Notes Home Page
Return
to the UC Davis Visualization and Graphics Group Home Page
This document maintained by Ken Joy
All contents copyright (c) 1996, 1997, 1998,
1999
Computer Science Department
University of California, Davis
All rights reserved.