]> git.tdb.fi Git - libs/math.git/blobdiff - source/geometry/compositeshape.h
Optimize bounding box bisection with more early culling
[libs/math.git] / source / geometry / compositeshape.h
index 5d0cd8c59532ed3b782c3cd60908c8ce96778b6c..c472b437e3052f4948cde3a68ac40a9f1107b35a 100644 (file)
@@ -201,10 +201,12 @@ inline Coverage CompositeShape<T, D, O>::get_coverage(const BoundingBox<T, D> &b
        for(typename ShapeArray::const_iterator i=shapes.begin(); i!=shapes.end(); ++i)
        {
                Coverage c = (*i)->get_coverage(bbox);
-               if(i==shapes.begin() || Ops::shortcircuit(c>coverage))
+               if(i==shapes.begin())
                        coverage = c;
+               else
+                       coverage = Ops::combine_coverage(coverage, c);
 
-               if(coverage!=PARTIAL_COVERAGE && Ops::shortcircuit(coverage==FULL_COVERAGE))
+               if((coverage==NO_COVERAGE && Ops::shortcircuit(false)) || (coverage==FULL_COVERAGE && Ops::shortcircuit(true)))
                        break;
        }