Skip to content

Commit ffa0aba

Browse files
authored
Add fix for the size-based PolygonalRegion containsRegion heuristic. (#458)
1 parent d74f61c commit ffa0aba

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

src/scenic/core/regions.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,15 @@ def containsRegion(self, reg, tolerance=0):
216216
if self.dimensionality < reg.dimensionality:
217217
return False
218218

219-
if self.size is not None and reg.size is not None:
219+
if tolerance == 0 and self.size is not None and reg.size is not None:
220220
# A smaller region cannot contain a larger region of the
221-
# same dimensionality.
222-
if self.dimensionality == reg.dimensionality and self.size < reg.size:
221+
# same dimensionality. We add a small factor to account for numerical error.
222+
# NOTE: This path is ignored when tolerance is non-zero as evaluating it correctly
223+
# in that case is non-trivial.
224+
if (
225+
self.dimensionality == reg.dimensionality
226+
and self.size * 1.01 < reg.size
227+
):
223228
return False
224229

225230
return self.containsRegionInner(reg, tolerance)

0 commit comments

Comments
 (0)