Game Development Reference

In-Depth Information

w

v

C

Figure 5.3.
Object
C
is fully contained in the closed negative half-space of the plane

defined by normal vector
v
and support point
w
=
s
C
(
w
)
.

s
C
that maps a vector
v
to a point of
C
, according to

s
C
(
v
)

∈

C

·

s
C
(
v
)=max

{

·

∈

C

}

such that

v

v

x
:
x

.

In plain terms, a support mapping returns a point of an object that lies furthest in

the direction of the input vector. We say “a point” since such a point is not neces-

sarily unique. In cases where multiple points yield the maximum dot product, the

support mapping may return any of these points. We do not care which point as

long as it yields a maximum dot product with the input vector.

The result of a support mapping for a given vector is called a
support point
.

A support point
w
=
s
C
(
v
) together with its input vector
v
forms a supporting

plane of the object defined by the set of points
x
for which
v

·

·

w
.The

object itself is fully contained in the closed negative half-space of this supporting

plane, as can be seen in Figure 5.3.

Support mappings can be found for all primitive shape types, such as triangles,

spheres, cones, and cylinders. For example, the support mapping of a polytope is

simply the support mapping of its set of vertices. Furthermore, support mappings

for objects that are obtained from primitive shape types by affine transformation,

convex hulls, and Minkowski addition can be constructed using the support map-

pings of the primitive types. A discussion of support mappings for commonly

used shape types falls outside the scope of this chapter. The reader is referred

to [van den Bergen 03] for learning more about support mappings. However, it is

important to note that the support mapping of the CSO of
A
and
B
is given by

x
=
v

s
A−B
(
v
)=
s
A
(
v
)

−

s
B
(

−

v
).

A support point of the CSO is simply the vector difference of the support points

for the two objects. As can be seen, an explicit representation of the CSO is not

required as long as we rely purely on support mappings in our algorithms.