Game Development Reference
simulating. This might be the ground, the walls of a level, or any other immovable
object. We could represent these as objects of infinite mass, but it would be a waste of
time: by definition they never move.
If we have a collision between one object and some piece of immovable scenery,
then we can't calculate the separating velocity in terms of the vector between the loca-
tion of each object: we only have one object. In other words we can't use the ( p a −
p b )
term in equation 7.2; we need to replace it.
The ( p a −
p b ) term gives us the direction in which the separating velocity is occur-
ring. The separating velocity is calculated by the dot product of the relative velocity
of the two objects and this term. If we don't have two objects, we can ask that the
direction be given to us explicitly. It is the direction in which the two objects are col-
liding and is usually called the “collision normal” or “contact normal.” Because it is a
direction, the vector should always have a magnitude of 1.
In cases where we have two particles colliding, the contact normal will always be
( p a −
p b )
By convention we always give the contact normal from object a 's perspective. In this
case, from a 's perspective, the contact is incoming from b ,soweuse p a −
p b .Togive
the direction of collision from b 's point of view we could simply multiply by
practice we don't do this explicitly, but factor this inversion into the code used to
calculate the separating velocity for b . You'll notice this in the code we implement
later in the chapter: a minus sign appears in b 's calculations.
When a particle is colliding with the ground, we only have an object a (the parti-
cle) and no object b .Inthiscasefromobject a 's perspective, the contact normal will
assuming that the ground is level at the point of collision.
When we leave particles and begin to work with full rigid bodies, having an ex-
plicit contact normal becomes crucial even for inter-object collisions. Without pre-
empting later chapters, figure 7.1 gives a taste of the situation we might come across.
Here the two colliding objects, by virtue of their shapes, have a contact normal in
almost exactly the opposite direction from that we'd expect if we simply considered
their locations. The objects arch over each other, and the contact is acting to prevent
them from moving apart rather than keeping them together. At the end of this chap-
ter we'll look at similar situations for particles, which can be used to represent rods
and other stiff connections.
With the correct contact normal, equation 7.2 becomes
p a − ˙
v s =
p b )