Game Development Reference

In-Depth Information

small threshold. To find
x
in a stable way, we'd need to compute something like

the length of the cross product between the contact normal and the face's normal,

and that's awkward and expensive compared to just examining the edges.

4.6.3 Step 2b: Supporting Two-Dimensional Shapes—

Exact Algorithms

In the case of mid- to high-polygon collision shapes, we may have to recover more

than just one feature

as the supporting shape. We may recover all features that

are aligned with
s
within the tolerance angle
α
.It's
s
min
for shape
B
and

F

−

s
min

for shape
A
. If we look at the Gauss map

G

of the shape, we can view
s
as a

2
. Let's draw a spherical cap

pole of

(
α,
s
) centered around
s
with the angular

radius
α
. We need to find all features with Gauss maps overlapping

S

C

C

at least

partially. For example, if a face
f
maps inside

C

like in Figure 4.10(c), it is tilted

no more than angle
α
from
s
,
f

are the

images of vertices on the boundary of the support shape (see
Figure 4.10(a
),
for

example). And the arcs intersecting
δ

s

≤

α
. The area(s) on

G

intersecting
δ

C

∠

(if any) are the boundary of the support

shape (see
Figure 4.10(b)
)
. Figure 4.10(d) shows the same shape and its Gauss

map oriented differently for reference.

The support shape found this way is not completely flat (although it's not

steeper than
α
relative to the support plane) and is not always convex, so we need

to project it onto a support plane and find its convex hull. We really prefer to

deal with convex shapes. So, we'll need to walk the support shape once to find its

C

Figure 4.10.
Faces in
C
and edges and vertices intersecting
δC
. Please refer to Figure 4.6

if this mapping is not clear enough.