Game Development Reference

In-Depth Information

F
IGURE
9.2

The circle of orientation vectors.

where
θ
is the angular representation of orientation and
θ
is the vector representation.

I have assumed that zero orientation would see the object facing along the positive

X axis, and that orientation increases in the counterclockwise direction. This is simply

a matter of convention.

The vector form of orientation makes many (but not all) mathematical operations

easier to perform, with less special-case code and bounds-checking.

In moving to a two-dimensional representation we have doubled the number of

values representing our orientation. We have only one degree of freedom when decid-

ing which direction an object should face, but the representation of a vector has two

degrees of freedom. A
degree of freedom
is some quantity that we could change inde-

pendent of others. A 3D position has three degrees of freedom, for example, because

we can move it in any of three directions without altering its position in the other two.

Calculating the number of degrees of freedom is an important tool for understanding

rotations in 3D.

Having this extra degree of freedom means that we could end up with a vector that

doesn't represent an orientation. In fact most vectors will not match equation 9.1. To

guarantee that our vector represents an orientation, we need to remove some of its

freedom. We do this by forcing the vector to have a magnitude of 1. Any vector with

a magnitude of 1 will match equation 9.1, and we'll be able to find its corresponding

angle.

There's a geometric way of looking at this constraint. If we draw a point at the end

ofallpossiblevectorswithamagnitudeof1,wegetacircle,asshowninfigure9.2.We

could say that a vector orientation correctly represents an orientation if it lies on this

circle. If we find a vector that is supposed to represent an orientation but is slightly

off (because of numerical errors in some calculation), we can fix it by bringing it onto