Many collision detection methods benefit from maintaining a distance function, which keeps track of how far the bodies are from colliding. For example, let and
denote the set of all points occupied in
by two different models. If they are in collision, then their intersection
is not empty. If they are not in collision, then the Hausdorff distance between
and
is the Euclidean distance between the closest pair of points, taking one from
and one from
.8.3 Let
denote this distance. If
and
intersect, then
because any point in
will yield zero distance. If
and
do not intersect, then
, which implies that they are not in collision (in other words, collision free).
If is large, then
and
are mostly likely to be collision free in the near future, even if one or both are moving. This leads to a family of collision detection methods called incremental
distance computation, which assumes that between successive calls to
the algorithm, the bodies move only a small
amount. Under this assumption the algorithm achieves ``almost
constant time'' performance for the case of convex polyhedral bodies
[183,218]. Nonconvex bodies can be decomposed into convex
components.
A concept related to distance is penetration depth, which indicates how far one model is poking into another [184]. This is useful for setting a threshold on how much interference between the two bodies is allowed. For example, the user might be able to poke his head two centimeters into a wall, but beyond that, an action should be taken.
Steven M LaValle 2020-11-11