From: Mikko Rasa Date: Mon, 23 Jan 2023 11:48:55 +0000 (+0200) Subject: Add a missing condition to BoundingBox subtraction X-Git-Url: https://git.tdb.fi/?a=commitdiff_plain;h=2823b675aef2d7fe3748dddc31a9086c45cc9d85;p=libs%2Fmath.git Add a missing condition to BoundingBox subtraction If the positive box extends to both sides of the negative box, the result should be equal to the positive box. --- diff --git a/source/geometry/boundingbox.h b/source/geometry/boundingbox.h index 4ae2935..ae9da2b 100644 --- a/source/geometry/boundingbox.h +++ b/source/geometry/boundingbox.h @@ -97,7 +97,7 @@ inline BoundingBox operator&(const BoundingBox &bb1, const BoundingB result_max = bb1.get_maximum_point(); if(bb2.get_minimum_coordinate(uncovered_axis)bb1.get_maximum_coordinate(uncovered_axis)) result_max[uncovered_axis] = bb2.get_minimum_coordinate(uncovered_axis); } else diff --git a/tests/boundingbox.cpp b/tests/boundingbox.cpp index d5e011b..16989d6 100644 --- a/tests/boundingbox.cpp +++ b/tests/boundingbox.cpp @@ -83,6 +83,11 @@ void BoundingBoxTests::subtraction() bboxs = bbox1&~bbox4; EXPECT(bboxs.is_empty()); + BoundingBox3 bbox5(Vector3(-3, -3, -1), Vector3(3, 3, 1)); + bboxs = bbox4&~bbox5; + EXPECT_EQUAL(bboxs.get_minimum_point(), bbox4.get_minimum_point()); + EXPECT_EQUAL(bboxs.get_maximum_point(), bbox4.get_maximum_point()); + bboxs = bbox1&~BoundingBox3(); EXPECT_EQUAL(bboxs.get_minimum_point(), bbox1.get_minimum_point()); EXPECT_EQUAL(bboxs.get_maximum_point(), bbox1.get_maximum_point());