![]() |
OpenSceneGraph
|
General purpose axis-aligned bounding box class for enclosing objects/vertices. More...
Public Types | |
typedef VT | vec_type |
typedef VT::value_type | value_type |
Public Member Functions | |
BoundingBoxImpl () | |
Creates an uninitialized bounding box. More... | |
template<typename BT > | |
BoundingBoxImpl (const BoundingBoxImpl< BT > &bb) | |
BoundingBoxImpl (value_type xmin, value_type ymin, value_type zmin, value_type xmax, value_type ymax, value_type zmax) | |
Creates a bounding box initialized to the given extents. More... | |
BoundingBoxImpl (const vec_type &min, const vec_type &max) | |
Creates a bounding box initialized to the given extents. More... | |
void | init () |
Clear the bounding box. More... | |
bool | operator== (const BoundingBoxImpl &rhs) const |
bool | operator!= (const BoundingBoxImpl &rhs) const |
bool | valid () const |
Returns true if the bounding box extents are valid, false otherwise. More... | |
void | set (value_type xmin, value_type ymin, value_type zmin, value_type xmax, value_type ymax, value_type zmax) |
Sets the bounding box extents. More... | |
void | set (const vec_type &min, const vec_type &max) |
Sets the bounding box extents. More... | |
value_type & | xMin () |
value_type | xMin () const |
value_type & | yMin () |
value_type | yMin () const |
value_type & | zMin () |
value_type | zMin () const |
value_type & | xMax () |
value_type | xMax () const |
value_type & | yMax () |
value_type | yMax () const |
value_type & | zMax () |
value_type | zMax () const |
const vec_type | center () const |
Calculates and returns the bounding box center. More... | |
value_type | radius () const |
Calculates and returns the bounding box radius. More... | |
value_type | radius2 () const |
Calculates and returns the squared length of the bounding box radius. More... | |
const vec_type | corner (unsigned int pos) const |
Returns a specific corner of the bounding box. More... | |
void | expandBy (const vec_type &v) |
Expands the bounding box to include the given coordinate. More... | |
void | expandBy (value_type x, value_type y, value_type z) |
Expands the bounding box to include the given coordinate. More... | |
void | expandBy (const BoundingBoxImpl &bb) |
Expands this bounding box to include the given bounding box. More... | |
template<typename BST > | |
void | expandBy (const BoundingSphereImpl< BST > &sh) |
Expands this bounding box to include the given sphere. More... | |
BoundingBoxImpl | intersect (const BoundingBoxImpl &bb) const |
Returns the intersection of this bounding box and the specified bounding box. More... | |
bool | intersects (const BoundingBoxImpl &bb) const |
Return true if this bounding box intersects the specified bounding box. More... | |
bool | contains (const vec_type &v) const |
Returns true if this bounding box contains the specified coordinate. More... | |
bool | contains (const vec_type &v, value_type epsilon) const |
Returns true if this bounding box contains the specified coordinate allowing for specific epsilon. More... | |
Public Attributes | |
vec_type | _min |
Minimum extent. More... | |
vec_type | _max |
Maximum extent. More... | |
General purpose axis-aligned bounding box class for enclosing objects/vertices.
Bounds leaf objects in a scene such as osg::Drawable objects. Used for frustum culling etc.
typedef VT::value_type osg::BoundingBoxImpl< VT >::value_type |
typedef VT osg::BoundingBoxImpl< VT >::vec_type |
|
inline |
Creates an uninitialized bounding box.
Referenced by osg::BoundingBoxImpl< VT >::intersect().
|
inline |
|
inline |
Creates a bounding box initialized to the given extents.
|
inline |
Creates a bounding box initialized to the given extents.
|
inline |
Calculates and returns the bounding box center.
Referenced by osg::BoundingSphereImpl< VT >::expandBy(), and osg::BoundingSphereImpl< VT >::expandRadiusBy().
|
inline |
Returns true if this bounding box contains the specified coordinate.
References osg::BoundingBoxImpl< VT >::valid().
|
inline |
Returns true if this bounding box contains the specified coordinate allowing for specific epsilon.
References osg::BoundingBoxImpl< VT >::valid().
|
inline |
Returns a specific corner of the bounding box.
pos specifies the corner as a number between 0 and 7. Each bit selects an axis, X, Y, or Z from least- to most-significant. Unset bits select the minimum value for that axis, and set bits select the maximum.
Referenced by osg::BoundingSphereImpl< VT >::expandBy(), osg::BoundingSphereImpl< VT >::expandRadiusBy(), and osg::Plane::intersect().
|
inline |
Expands the bounding box to include the given coordinate.
If the box is uninitialized, set its min and max extents to v.
Referenced by osg::BoundingSphereImpl< VT >::expandBy(), and osg::Drawable::getBoundingBox().
|
inline |
Expands the bounding box to include the given coordinate.
If the box is uninitialized, set its min and max extents to Vec3(x,y,z).
|
inline |
Expands this bounding box to include the given bounding box.
If this box is uninitialized, set it equal to bb.
References osg::BoundingBoxImpl< VT >::_max, osg::BoundingBoxImpl< VT >::_min, and osg::BoundingBoxImpl< VT >::valid().
|
inline |
Expands this bounding box to include the given sphere.
If this box is uninitialized, set it to include sh.
References osg::BoundingSphereImpl< VT >::_center, osg::BoundingSphereImpl< VT >::_radius, and osg::BoundingSphereImpl< VT >::valid().
|
inline |
Clear the bounding box.
Erases existing minimum and maximum extents.
|
inline |
Returns the intersection of this bounding box and the specified bounding box.
References osg::BoundingBoxImpl< VT >::BoundingBoxImpl(), osg::maximum(), osg::minimum(), osg::BoundingBoxImpl< VT >::xMax(), osg::BoundingBoxImpl< VT >::xMin(), osg::BoundingBoxImpl< VT >::yMax(), osg::BoundingBoxImpl< VT >::yMin(), osg::BoundingBoxImpl< VT >::zMax(), and osg::BoundingBoxImpl< VT >::zMin().
|
inline |
Return true if this bounding box intersects the specified bounding box.
References osg::maximum(), osg::minimum(), osg::BoundingBoxImpl< VT >::xMax(), osg::BoundingBoxImpl< VT >::xMin(), osg::BoundingBoxImpl< VT >::yMax(), osg::BoundingBoxImpl< VT >::yMin(), osg::BoundingBoxImpl< VT >::zMax(), and osg::BoundingBoxImpl< VT >::zMin().
|
inline |
References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.
|
inline |
References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.
|
inline |
Calculates and returns the bounding box radius.
References osg::BoundingBoxImpl< VT >::radius2().
Referenced by osg::BoundingSphereImpl< VT >::expandBy(), and osg::BoundingSphereImpl< VT >::expandRadiusBy().
|
inline |
Calculates and returns the squared length of the bounding box radius.
Note, radius2() is faster to calculate than radius().
References osg::BoundingBoxImpl< VT >::_min.
Referenced by osg::BoundingBoxImpl< VT >::radius().
|
inline |
Sets the bounding box extents.
|
inline |
Sets the bounding box extents.
|
inline |
Returns true if the bounding box extents are valid, false otherwise.
Referenced by osg::BoundingBoxImpl< VT >::contains(), osg::BoundingSphereImpl< VT >::expandBy(), osg::BoundingBoxImpl< VT >::expandBy(), osg::BoundingSphereImpl< VT >::expandRadiusBy(), and osg::CullStack::isCulled().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
vec_type osg::BoundingBoxImpl< VT >::_max |
Maximum extent.
(Greatest X, Y, and Z values of all coordinates.)
Referenced by osg::BoundingBoxImpl< VT >::expandBy(), osg::BoundingBoxImpl< VT >::operator!=(), and osg::BoundingBoxImpl< VT >::operator==().
vec_type osg::BoundingBoxImpl< VT >::_min |
Minimum extent.
(Smallest X, Y, and Z values of all coordinates.)
Referenced by osg::BoundingBoxImpl< VT >::expandBy(), osg::BoundingBoxImpl< VT >::operator!=(), osg::BoundingBoxImpl< VT >::operator==(), and osg::BoundingBoxImpl< VT >::radius2().