OpenSceneGraph
Public Types | Public Member Functions | Public Attributes | List of all members
osg::BoundingBoxImpl< VT > Class Template Reference

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_typexMin ()
 
value_type xMin () const
 
value_typeyMin ()
 
value_type yMin () const
 
value_typezMin ()
 
value_type zMin () const
 
value_typexMax ()
 
value_type xMax () const
 
value_typeyMax ()
 
value_type yMax () const
 
value_typezMax ()
 
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...
 

Detailed Description

template<typename VT>
class osg::BoundingBoxImpl< VT >

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.

Member Typedef Documentation

◆ value_type

template<typename VT>
typedef VT::value_type osg::BoundingBoxImpl< VT >::value_type

◆ vec_type

template<typename VT>
typedef VT osg::BoundingBoxImpl< VT >::vec_type

Constructor & Destructor Documentation

◆ BoundingBoxImpl() [1/4]

template<typename VT>
osg::BoundingBoxImpl< VT >::BoundingBoxImpl ( )
inline

Creates an uninitialized bounding box.

Referenced by osg::BoundingBoxImpl< VT >::intersect().

◆ BoundingBoxImpl() [2/4]

template<typename VT>
template<typename BT >
osg::BoundingBoxImpl< VT >::BoundingBoxImpl ( const BoundingBoxImpl< BT > &  bb)
inline

◆ BoundingBoxImpl() [3/4]

template<typename VT>
osg::BoundingBoxImpl< VT >::BoundingBoxImpl ( value_type  xmin,
value_type  ymin,
value_type  zmin,
value_type  xmax,
value_type  ymax,
value_type  zmax 
)
inline

Creates a bounding box initialized to the given extents.

◆ BoundingBoxImpl() [4/4]

template<typename VT>
osg::BoundingBoxImpl< VT >::BoundingBoxImpl ( const vec_type min,
const vec_type max 
)
inline

Creates a bounding box initialized to the given extents.

Member Function Documentation

◆ center()

template<typename VT>
const vec_type osg::BoundingBoxImpl< VT >::center ( ) const
inline

Calculates and returns the bounding box center.

Referenced by osg::BoundingSphereImpl< VT >::expandBy(), and osg::BoundingSphereImpl< VT >::expandRadiusBy().

◆ contains() [1/2]

template<typename VT>
bool osg::BoundingBoxImpl< VT >::contains ( const vec_type v) const
inline

Returns true if this bounding box contains the specified coordinate.

References osg::BoundingBoxImpl< VT >::valid().

◆ contains() [2/2]

template<typename VT>
bool osg::BoundingBoxImpl< VT >::contains ( const vec_type v,
value_type  epsilon 
) const
inline

Returns true if this bounding box contains the specified coordinate allowing for specific epsilon.

References osg::BoundingBoxImpl< VT >::valid().

◆ corner()

template<typename VT>
const vec_type osg::BoundingBoxImpl< VT >::corner ( unsigned int  pos) const
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().

◆ expandBy() [1/4]

template<typename VT>
void osg::BoundingBoxImpl< VT >::expandBy ( const vec_type v)
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().

◆ expandBy() [2/4]

template<typename VT>
void osg::BoundingBoxImpl< VT >::expandBy ( value_type  x,
value_type  y,
value_type  z 
)
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).

◆ expandBy() [3/4]

template<typename VT>
void osg::BoundingBoxImpl< VT >::expandBy ( const BoundingBoxImpl< VT > &  bb)
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().

◆ expandBy() [4/4]

template<typename VT>
template<typename BST >
void osg::BoundingBoxImpl< VT >::expandBy ( const BoundingSphereImpl< BST > &  sh)
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().

◆ init()

template<typename VT>
void osg::BoundingBoxImpl< VT >::init ( )
inline

Clear the bounding box.

Erases existing minimum and maximum extents.

◆ intersect()

template<typename VT>
BoundingBoxImpl osg::BoundingBoxImpl< VT >::intersect ( const BoundingBoxImpl< VT > &  bb) const
inline

◆ intersects()

template<typename VT>
bool osg::BoundingBoxImpl< VT >::intersects ( const BoundingBoxImpl< VT > &  bb) const
inline

◆ operator!=()

template<typename VT>
bool osg::BoundingBoxImpl< VT >::operator!= ( const BoundingBoxImpl< VT > &  rhs) const
inline

◆ operator==()

template<typename VT>
bool osg::BoundingBoxImpl< VT >::operator== ( const BoundingBoxImpl< VT > &  rhs) const
inline

◆ radius()

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::radius ( ) const
inline

Calculates and returns the bounding box radius.

References osg::BoundingBoxImpl< VT >::radius2().

Referenced by osg::BoundingSphereImpl< VT >::expandBy(), and osg::BoundingSphereImpl< VT >::expandRadiusBy().

◆ radius2()

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::radius2 ( ) const
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().

◆ set() [1/2]

template<typename VT>
void osg::BoundingBoxImpl< VT >::set ( value_type  xmin,
value_type  ymin,
value_type  zmin,
value_type  xmax,
value_type  ymax,
value_type  zmax 
)
inline

Sets the bounding box extents.

◆ set() [2/2]

template<typename VT>
void osg::BoundingBoxImpl< VT >::set ( const vec_type min,
const vec_type max 
)
inline

Sets the bounding box extents.

◆ valid()

template<typename VT>
bool osg::BoundingBoxImpl< VT >::valid ( ) const
inline

◆ xMax() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::xMax ( )
inline

◆ xMax() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::xMax ( ) const
inline

◆ xMin() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::xMin ( )
inline

◆ xMin() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::xMin ( ) const
inline

◆ yMax() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::yMax ( )
inline

◆ yMax() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::yMax ( ) const
inline

◆ yMin() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::yMin ( )
inline

◆ yMin() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::yMin ( ) const
inline

◆ zMax() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::zMax ( )
inline

◆ zMax() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::zMax ( ) const
inline

◆ zMin() [1/2]

template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::zMin ( )
inline

◆ zMin() [2/2]

template<typename VT>
value_type osg::BoundingBoxImpl< VT >::zMin ( ) const
inline

Member Data Documentation

◆ _max

template<typename VT>
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==().

◆ _min

template<typename VT>
vec_type osg::BoundingBoxImpl< VT >::_min

The documentation for this class was generated from the following file: