I'd like to monitor the distance from the point P and the triangle being tested for intersection, so that I can stop the routine when the distance falls below a certain value.

I tried modifying the 0.00001 values in the code thinking that it was meant to be a tolerance value for such collision "distance", but it seems to be ineffective.

What do you think? There is a way to do it? Here below is the routine derived from the document above:

int rayIntersectsTriangle(vector3_t orig, vector3_t dir, vector3_t v0, vector3_t v1, vector3_t v2) { float a,f,u,v,t; vector3_t e1= v1-v0; vector3_t e2= v2-v0; vector3_t h=dir^e2; a = e1*h; if (a > -0.00001 && a < 0.00001) return(false); f = 1.0/a; vector3_t s=orig-v0; u = f * (s*h); if (u < 0.0 || u > 1.0) return(false); vector3_t q=s^e1; v = f * (dir*q); if (v < 0.0 || u + v > 1.0) return(false); // at this stage we can compute t to find out where the intersection point is on the line t = f * (e2*q); if (t > 0.00001) // ray intersection return(true); else // this means that there is a line intersection // but not a ray intersection return (false); }