Game Development Reference

In-Depth Information

Figure 1.3.
Projection of one vector onto another.

1.2.3 Dot Product

The dot product of two vectors
a
and
b
is defined as

a

·

b
=

a

b

cos
θ,

(1.1)

where
θ
is the angle between
a
and
b
.

For two vectors using a standard Euclidean basis, this can be represented as

a
·
b
=
a
x
b
x
+
a
y
b
y
+
a
z
b
z
.

There are two uses of this that are of particular interest to game physics de-

velopers. First of all, it can be used to do simple tests of the angle between two

vectors. If
a

·

b
>
0,then
θ<π/
2;if
a

·

b
<
0,then
θ>π/
2;andif
a

·

b
=0,

then
θ
=
π/
2. In the latter case, we also say that the two vectors are
orthogonal
.

The other main use of the dot product is for projecting one vector onto another.

If we have two vectors
a
and
b
, we can break
a
into two pieces
a
||
and
a
⊥
such

that
a
||
+
a
⊥
=
a
and
a
||
points along the same direction as, or is
parallel
to,
b

(see
Figure 1.3
). The vector
a
||

is also known as the scalar projection of
a
onto
b
.

cos
θ
,whichwe

can see from Figure 1.3 is the length of the projection of
a
onto
b
. The projected

vector itself can be computed as

From Equation (1.1), if

b

=1,then
a

·

b
is simply

a

a
||
=(
a
·
b
)
b
.

The remaining, or orthogonal portion of
a
can be computed as

a
⊥
=
a

−

a
||
.

1.2.4 Cross Product

The cross product of two vectors
a
and
b
is defined as

a

×

b
=(
a
y
b
z
−

a
z
b
y
,a
z
b
x
−

a
x
b
z
,a
x
b
y
−

a
y
b
x
)
.