bool Inside_Object (const Vector3d& IPoint, ObjectPtr Object, TraceThreadData *Thread) { for (vector<ObjectPtr>::iterator Sib = Object->Clip.begin(); Sib != Object->Clip.end(); Sib++) { if(!Inside_Object(IPoint, *Sib, Thread)) return false; } return (Object->Inside(IPoint, Thread)); }
bool Inside_Object (VECTOR IPoint, OBJECT *Object) { OBJECT *Sib; for (Sib = Object->Clip; Sib != NULL; Sib = Sib->Sibling) { if (!Inside_Object(IPoint, Sib)) { return(false); } } return (Inside(IPoint,Object)); }
bool Point_In_Clip (const Vector3d& IPoint, const vector<ObjectPtr>& Clip, TraceThreadData *Thread) { for(vector<ObjectPtr>::const_iterator Local_Clip = Clip.begin(); Local_Clip != Clip.end(); Local_Clip++) { Thread->Stats()[Clipping_Region_Tests]++; if(!Inside_Object(IPoint, *Local_Clip, Thread)) return false; Thread->Stats()[Clipping_Region_Tests_Succeeded]++; } return true; }
bool Ray_In_Bound (const Ray& ray, const vector<ObjectPtr>& Bounding_Object, TraceThreadData *Thread) { Intersection Local; for(vector<ObjectPtr>::const_iterator Bound = Bounding_Object.begin(); Bound != Bounding_Object.end(); Bound++) { Thread->Stats()[Bounding_Region_Tests]++; if((!Find_Intersection (&Local, *Bound, ray, Thread)) && (!Inside_Object(ray.Origin, *Bound, Thread))) return false; Thread->Stats()[Bounding_Region_Tests_Succeeded]++; } return true; }
bool Point_In_Clip (VECTOR IPoint, OBJECT *Clip) { OBJECT *Local_Clip; for (Local_Clip = Clip; Local_Clip != NULL; Local_Clip = Local_Clip->Sibling) { Increase_Counter(stats[Clipping_Region_Tests]); if (!Inside_Object(IPoint, Local_Clip)) { return (false); } Increase_Counter(stats[Clipping_Region_Tests_Succeeded]); } return (true); }
bool Ray_In_Bound (RAY *Ray, OBJECT *Bounding_Object) { OBJECT *Bound; INTERSECTION Local; for (Bound = Bounding_Object; Bound != NULL; Bound = Bound->Sibling) { Increase_Counter(stats[Bounding_Region_Tests]); if (!Intersection (&Local, Bound, Ray)) { if (!Inside_Object(Ray->Initial, Bound)) { return (false); } } Increase_Counter(stats[Bounding_Region_Tests_Succeeded]); } return (true); }