Bounding Box Class
[Math API]
Description
An axis-aligned N-dimensional bounding box class template of fixed dimension with supporting functions.
Include File:
#include <mi/math/bbox.h>
Classes
- class
- Axis-aligned N-dimensional bounding box class template of fixed dimension. More...
- struct
- Storage class for an axis-aligned N-dimensional bounding box class template of fixed dimension. More...
Functions
- template< typename T, Size> Bbox < T , DIM > mi::math::clip( const Bbox < T , DIM >& bbox1, const Bbox < T , DIM >& bbox2)
- Clip bbox1 at bbox2 and return the result. More...
- template< typename T, Size> Bbox < T , DIM > mi::math::lerp( const Bbox < T , DIM >& bbox1, const Bbox < T , DIM >& bbox2, T t)
- Returns the linear interpolation between bbox1 and bbox2, i.e., it returns (1-t) * bbox1 + t * bbox2. More...
- template< typename T, Size>bool mi::math::operator!=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is elementwise not equal to rhs.
- template< typename T, Size> Bbox < T , DIM > mi::math::operator*( const Bbox < T , DIM >& bbox, T factor)
- Returns a bounding box that is a version of bbox scaled by factor, i.e., bbox.max and bbox.min are multiplied by factor. More...
- template< typename T, Size> Bbox < T , DIM >& mi::math::operator*=( Bbox < T , DIM >& bbox, T factor)
- Scales bbox by factor, i.e., bbox.max and bbox.min are multiplied by factor. More...
- template< typename T, Size> Bbox < T , DIM > mi::math::operator+( const Bbox < T , DIM >& bbox, T value)
- Returns a bounding box that is the bbox increased by a constant value at each face, i.e., value is added to bbox.max and subtracted from bbox.min. More...
- template< typename T, Size> Bbox < T , DIM >& mi::math::operator+=( Bbox < T , DIM >& bbox, T value)
- Increases bbox by a constant value at each face, i.e., value is added to bbox.max and subtracted from bbox.min. More...
- template< typename T, Size> Bbox < T , DIM > mi::math::operator-( const Bbox < T , DIM >& bbox, T value)
- Returns a bounding box that is the bbox shrunk by a constant value at each face, i.e., value is subtracted from bbox.max and added to bbox.min. More...
- template< typename T, Size> Bbox < T , DIM >& mi::math::operator-=( Bbox < T , DIM >& bbox, T value)
- Shrinks bbox by a constant value at each face, i.e., value is subtracted from bbox.max and added to bbox.min. More...
- template< typename T, Size> Bbox < T , DIM > mi::math::operator/( const Bbox < T , DIM >& bbox, T divisor)
- Returns a bounding box that is a version of bbox divided by divisor, i.e., bbox.max and bbox.min are divided by divisor. More...
- template< typename T, Size> Bbox < T , DIM >& mi::math::operator/=( Bbox < T , DIM >& bbox, T divisor)
- Divide bbox by divisor, i.e., bbox.max and bbox.min are divided by divisor. More...
- template< typename T, Size>bool mi::math::operator<( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is lexicographically less than rhs. More...
- template< typename T, Size>bool mi::math::operator<=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is lexicographically less than or equal to rhs. More...
- template< typename T, Size>bool mi::math::operator==( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is elementwise equal to rhs.
- template< typename T, Size>bool mi::math::operator>( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is lexicographically greater than rhs. More...
- template< typename T, Size>bool mi::math::operator>=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs)
- Returns true if lhs is lexicographically greater than or equal to rhs. More...
- template< typename TT, typename T> Bbox < T , 3 > mi::math::transform_point( const Matrix < TT , 4 , 4 >& mat, const Bbox < T , 3 >& bbox)
- Returns the 3D bounding box transformed by a matrix. More...
- template< typename TT, typename T> Bbox < T , 3 > mi::math::transform_vector( const Matrix < TT , 4 , 4 >& mat, const Bbox < T , 3 >& bbox)
- Returns the 3D bounding box transformed by a matrix. More...
Functions
-
template< typename T, Size>
Bbox < T , DIM > mi::math::clip( const Bbox < T , DIM >& bbox1, const Bbox < T , DIM >& bbox2) [inline] -
Clip bbox1 at bbox2 and return the result. I.e., the resulting bbox is the intersection of bbox1 with bbox2.
Parameters
- bbox1
- first bounding box
- bbox2
- second bounding box
-
template< typename T, Size>
Bbox < T , DIM > mi::math::lerp( const Bbox < T , DIM >& bbox1, const Bbox < T , DIM >& bbox2, T t) [inline] -
Returns the linear interpolation between bbox1 and bbox2, i.e., it returns (1-t) * bbox1 + t * bbox2.
Precondition:
bbox1 and bbox2 are not empty.
Parameters
- bbox1
- one bounding box
- bbox2
- second bounding box
- t
- interpolation parameter in [0,1]
-
template< typename T, Size>
bool mi::math::operator!=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is elementwise not equal to rhs.
-
template< typename T, Size>
Bbox < T , DIM > mi::math::operator*( const Bbox < T , DIM >& bbox, T factor) [inline] -
Returns a bounding box that is a version of bbox scaled by factor, i.e., bbox.max and bbox.min are multiplied by factor.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM >& mi::math::operator*=( Bbox < T , DIM >& bbox, T factor) [inline] -
Scales bbox by factor, i.e., bbox.max and bbox.min are multiplied by factor.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM > mi::math::operator+( const Bbox < T , DIM >& bbox, T value) [inline] -
Returns a bounding box that is the bbox increased by a constant value at each face, i.e., value is added to bbox.max and subtracted from bbox.min.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM >& mi::math::operator+=( Bbox < T , DIM >& bbox, T value) [inline] -
Increases bbox by a constant value at each face, i.e., value is added to bbox.max and subtracted from bbox.min.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM > mi::math::operator-( const Bbox < T , DIM >& bbox, T value) [inline] -
Returns a bounding box that is the bbox shrunk by a constant value at each face, i.e., value is subtracted from bbox.max and added to bbox.min.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM >& mi::math::operator-=( Bbox < T , DIM >& bbox, T value) [inline] -
Shrinks bbox by a constant value at each face, i.e., value is subtracted from bbox.max and added to bbox.min.
Precondition:
bbox is not empty
-
template< typename T, Size>
Bbox < T , DIM > mi::math::operator/( const Bbox < T , DIM >& bbox, T divisor) [inline] -
Returns a bounding box that is a version of bbox divided by divisor, i.e., bbox.max and bbox.min are divided by divisor.
Precondition:
bbox is not empty and divisor is not zero
-
template< typename T, Size>
Bbox < T , DIM >& mi::math::operator/=( Bbox < T , DIM >& bbox, T divisor) [inline] -
Divide bbox by divisor, i.e., bbox.max and bbox.min are divided by divisor.
Precondition:
bbox is not empty and divisor is not zero
-
template< typename T, Size>
bool mi::math::operator<( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is lexicographically less than rhs.
See also:
mi_def_lexicographic_order
-
template< typename T, Size>
bool mi::math::operator<=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is lexicographically less than or equal to rhs.
See also:
mi_def_lexicographic_order
-
template< typename T, Size>
bool mi::math::operator==( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is elementwise equal to rhs.
-
template< typename T, Size>
bool mi::math::operator>( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is lexicographically greater than rhs.
See also:
mi_def_lexicographic_order
-
template< typename T, Size>
bool mi::math::operator>=( const Bbox < T , DIM >& lhs, const Bbox < T , DIM >& rhs) [inline] -
Returns true if lhs is lexicographically greater than or equal to rhs.
See also:
mi_def_lexicographic_order
-
template< typename TT, typename T>
Bbox < T , 3 > mi::math::transform_point( const Matrix < TT , 4 , 4 >& mat, const Bbox < T , 3 >& bbox) [inline] -
Returns the 3D bounding box transformed by a matrix. The transformation (including the translation) is applied to the eight bounding box corners (interpreted as points) and a new axis aligned bounding box is computed for these transformed corners.
Note:The transformed bounding box is likely to be a more pessimistic approximation of a geometry that was approximated by the original bounding box. Transforming the approximated geometry and computing a new bounding box gives usually a tighter bounding box.
Parameters
- mat
- 4x4 transformation matrix
- bbox
- the bounding box to transform
-
template< typename TT, typename T>
Bbox < T , 3 > mi::math::transform_vector( const Matrix < TT , 4 , 4 >& mat, const Bbox < T , 3 >& bbox) [inline] -
Returns the 3D bounding box transformed by a matrix. The transformation (excluding the translation) is applied to the eight bounding box corners (interpreted as vectors) and a new axis aligned bounding box is computed for these transformed corners.
Parameters
- mat
- 4x4 transformation matrix
- bbox
- the bounding box to transform