8.3 A Dynamic Collision Detection System 459
// specified time interval.
float fF1 = Pseudodistance(fMaxTime,rkVelocity0,
rkVelocity1);
if (fF1 > 0.0f)
{
// Compute or estimate the derivative F’(tmax).
float fFDer1 = PseudodistanceDerivative(
fMaxTime,fF1,rkVelocity0,rkVelocity1);
if (fFDer1 < 0.0f)
{
// The objects are moving toward each other and
// do not intersect during the specified time
// interval.
return SEPARATED;
}
}
return UNKNOWN;
}
The base class function Find is the following.
Colliders::CollisionType Colliders::Find (float fMaxTime,
const Vector3f& rkVelocity0, const Vector3f& rkVelocity1,
float& rfContactTime)
{
float fF0, fFDer0;
CollisionType eCollisionType = FastNoIntersection(
fMaxTime,rkVelocity0,rkVelocity1,fF0,fFDer0);
if (eCollisionType !=