Game Development Reference
In-Depth Information
CHAPTER 11
Rotation in 3D Rigid-Body Simulators
A fundamental difference between particles and rigid bodies is that we cannot ignore
rotation of rigid bodies. This applies to both 2D and 3D rigid bodies. In two dimensions,
it's quite easy to express the orientation of a rigid body; you need only a single scalar to
represent the body's rotation about a single axis. In three dimensions, however, there
are three primary coordinate axes about each of which a rigid body may rotate. More‐
over, a rigid body in three dimensions may rotate about any arbitrary axis, not neces‐
sarily one of the coordinate axes.
In two dimensions, we say that a rigid body has only one rotational degree of freedom,
whereas in three dimensions we say that a rigid body has three rotational degrees of
freedom. This may lead you to infer that in three dimensions, you must have three scalar
quantities to represent a body's rotation. Indeed, this is a minimum requirement, and
you're probably already familiar with a set of angles that represent the orientation of a
rigid body in 3D—namely, the three Euler angles (roll, pitch, and yaw) that we'll talk
These three angles—roll, pitch, and yaw—are very intuitive and easy for us to visualize.
For example, in an airplane the nose pitches up or down, the plane rolls (or banks) left
or right, and the yaw (or heading) changes to the left or right. Unfortunately, there's a
problem with using these three Euler angles in rigid-body simulations. The problem is
a numerical one that occurs when the pitch angle reaches plus or minus 90 degrees (π/
2). When this happens, roll and yaw become ambiguous. Worse yet, the angular equa‐
tions of motion written in terms of Euler angles contain terms involving the cosine of
the pitch angle in the denominator, which means that when the pitch angle is plus or
minus 90 degrees the equations become singular (i.e., there's division by 0). If this hap‐
pens in your simulation, the results would be unpredictable to say the least. Given this
problem with Euler angles, you must use some other means of keeping track of orien‐
tation in your simulation. We'll discuss two such means in this chapter—specifically,
rotation matrices and quaternions.