Game Development Reference
In-Depth Information
Describing 3D space
First let's imagine a small box lying on the floor of a simple room (Figure
1.1).
How can we create a dataset that
describes the position of the box? One
method is to use a tape measure to find
out the distance of the box from each
wall. But which wall? We need to have a
frame of reference to work from.
Figure 1.2 shows the same room, only
this time there are three perpendicular
axes overlaid on the picture. The point
where the three axes meet is called the
origin. The use of these three axes
allows you as a programmer to specify
any position in the room using three
numerical values.
In Figure 1.2, the two marked lines
perpendicular to the axes give an indica-
tion of the scale we intend to use. Each
slash on these lines represents 10 cm.
Counting the slashes gives the box as 6
along the x -axis and 8 along the z -axis.
The box is lying on the floor, so the value
along the y -axis is 0. To define the
position of the box with respect to the
frame of reference we use a vector ,
Figure 1.1 A simplified room
showing a small box.
[6, 0, 8]
In this topic, all vectors are of the form
[ x , y , z ].
The direction of the axes is the
scheme used throughout this topic. The y -axis points up, the x -axis points
to the right and the z -axis points out of the screen. We use this scheme
because it is the same as that used by the OpenGL graphics library.
Figure 1.2 A simplified room
with overlaid axes.
Transforming the box
To move the box around the room we can create a vector that gives the
distance in the x , y and z directions that you intend to move the box. That