Skip to content

Commit 40b658b

Browse files
committed
add basis for aabb and obb of all geometry objects
1 parent ee0e3ba commit 40b658b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/compas/geometry/geometry.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class Geometry(Data):
1717

1818
def __init__(self, name=None):
1919
super(Geometry, self).__init__(name=name)
20+
self._aabb = None
21+
self._obb = None
2022

2123
def __eq__(self, other):
2224
raise NotImplementedError
@@ -25,6 +27,18 @@ def __ne__(self, other):
2527
# this is not obvious to ironpython
2628
return not self.__eq__(other)
2729

30+
@property
31+
def aabb(self):
32+
if self._aabb is None:
33+
self._aabb = self.compute_aabb()
34+
return self._aabb
35+
36+
@property
37+
def obb(self):
38+
if self._obb is None:
39+
self._obb = self.compute_obb()
40+
return self._obb
41+
2842
def transform(self, transformation):
2943
"""Transform the geometry.
3044
@@ -260,3 +274,23 @@ def rotated(self, angle, axis=None, point=None): # type: (...) -> G
260274
axis = [0.0, 0.0, 1.0]
261275

262276
return self.transformed(Rotation.from_axis_and_angle(axis, angle, point))
277+
278+
def compute_aabb(self):
279+
"""Compute the axis-aligned bounding box of the geometry.
280+
281+
Returns
282+
-------
283+
:class:`compas.geometry.Box`
284+
285+
"""
286+
raise NotImplementedError
287+
288+
def compute_obb(self):
289+
"""Compute the oriented bounding box of the geometry.
290+
291+
Returns
292+
-------
293+
:class:`compas.geometry.Box`
294+
295+
"""
296+
raise NotImplementedError

0 commit comments

Comments
 (0)