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

about in
Chapter 15
.

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.