From 4c4d505b6fcc959ccf8d5a9f635f984348836ba5 Mon Sep 17 00:00:00 2001 From: cignoni Date: Mon, 21 Nov 2011 08:54:35 +0000 Subject: [PATCH] added assert for discouraging inconsistent triangleplane intersection --- vcg/space/intersection3.h | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/vcg/space/intersection3.h b/vcg/space/intersection3.h index 3061dbb2..5b3e96cc 100644 --- a/vcg/space/intersection3.h +++ b/vcg/space/intersection3.h @@ -269,6 +269,8 @@ namespace vcg { /// intersection between plane and triangle // not optimal: uses plane-segment intersection (and the fact the two or none edges can be intersected) + // its use is rather dangerous because it can return inconsistent stuff on degenerate cases. + // added assert to underline this danger. template inline bool IntersectionPlaneTriangle( const Plane3 & pl, const TRIANGLETYPE & tr, @@ -280,15 +282,18 @@ namespace vcg { return true; else { - IntersectionPlaneSegment(pl,Segment3(tr.P(1),tr.P(2)),sg.P1()); - return true; + if(IntersectionPlaneSegment(pl,Segment3(tr.P(1),tr.P(2)),sg.P1())) + return true; + else assert(0); + return true; } } else { if(IntersectionPlaneSegment(pl,Segment3(tr.P(1),tr.P(2)),sg.P0())) { - IntersectionPlaneSegment(pl,Segment3(tr.P(0),tr.P(2)),sg.P1()); + if(IntersectionPlaneSegment(pl,Segment3(tr.P(0),tr.P(2)),sg.P1()))return true; + assert(0); return true; } }