Game Development Reference
In-Depth Information
be consistent. Think about the triangle ABD as the tetrahedron rotates
about the y -axis. If this rotation is clockwise when viewed from above then
the vertex B moves right and the vertex D moves left. At a certain stage
the line BD is vertical. If the rotation continues then B is to the right of D.
At this stage in the rotation the face ABD is pointing away from the viewer.
Since we know that the order of the vertices read in a counter-clockwise
direction should be ABD, when the order changes to ADB, the triangle has
turned away from the viewer. This is very useful because in most
situations it is possible to effectively disregard this polygon. (If an object
is transparent then it will be necessary to continue to render back-facing
polygons.) We will look at other techniques to determine back-facing
polygons, but vertex order is always the most efficient to compute.
Polygon normals
A normal is simply a vector that points
directly out from a polygon. It is used in
computer graphics for determining lighting
levels, amongst other things. For the soft-
ware accompanying this topic we store the
normal for every polygon in a scene. We
have already seen how to deal with the sum
of two vectors. The method is easily exten-
ded to allow us to subtract two vectors:
Figure 1.4 A polygon normal.
[ x , y , z ]=[ x 1, y 1, z 1] - [ x 2, y 2, z 2]
=[ x 1- x 2, y 1- y 2, z 1- z 2]
For example,
[6, 0, 8] - [6, 3, 2] = [6 - 6, 0 - 3, 8 - 2]
= [0, -3, 6]
But what happens when we choose to multiply two vectors. In fact, there
are two methods of 'multiplying' vectors. One is referred to as the dot
product . This is defined as
a b =
a b cos(
) where 0
180°
The symbol | a | refers to the magnitude of the vector a , which is defined
as:
a
=
( x * x + y * y + z * z )