OpenSceneGraph  3.0.1
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.
 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.
 BoundingBoxImpl (const vec_type &min, const vec_type &max)
 Creates a bounding box initialized to the given extents.
void init ()
 Clear the bounding box.
bool valid () const
 Returns true if the bounding box extents are valid, false otherwise.
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.
void set (const vec_type &min, const vec_type &max)
 Sets the bounding box extents.
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.
value_type radius () const
 Calculates and returns the bounding box radius.
value_type radius2 () const
 Calculates and returns the squared length of the bounding box radius.
const vec_type corner (unsigned int pos) const
 Returns a specific corner of the bounding box.
void expandBy (const vec_type &v)
 Expands the bounding box to include the given coordinate.
void expandBy (value_type x, value_type y, value_type z)
 Expands the bounding box to include the given coordinate.
void expandBy (const BoundingBoxImpl &bb)
 Expands this bounding box to include the given bounding box.
void expandBy (const BoundingSphereImpl< VT > &sh)
 Expands this bounding box to include the given sphere.
BoundingBoxImpl intersect (const BoundingBoxImpl &bb) const
 Returns the intersection of this bounding box and the specified bounding box.
bool intersects (const BoundingBoxImpl &bb) const
 Return true if this bounding box intersects the specified bounding box.
bool contains (const vec_type &v) const
 Returns true if this bounding box contains the specified coordinate.

Public Attributes

vec_type _min
 Minimum extent.
vec_type _max
 Maximum extent.

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

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

Constructor & Destructor Documentation

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

Creates an uninitialized bounding box.

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

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.

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

template<typename VT>
const vec_type osg::BoundingBoxImpl< VT >::center ( ) const
inline
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 >::_max, osg::BoundingBoxImpl< VT >::_min, and osg::BoundingBoxImpl< VT >::valid().

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.

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

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

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.

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

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

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).

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

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().

template<typename VT>
void osg::BoundingBoxImpl< VT >::expandBy ( const BoundingSphereImpl< VT > &  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::BoundingBoxImpl< VT >::_max, osg::BoundingBoxImpl< VT >::_min, osg::BoundingSphereImpl< VT >::_radius, and osg::BoundingSphereImpl< VT >::valid().

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

Clear the bounding box.

Erases existing minimum and maximum extents.

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

template<typename VT>
BoundingBoxImpl osg::BoundingBoxImpl< VT >::intersect ( const BoundingBoxImpl< VT > &  bb) const
inline
template<typename VT>
bool osg::BoundingBoxImpl< VT >::intersects ( const BoundingBoxImpl< VT > &  bb) const
inline
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().

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 >::_max, and osg::BoundingBoxImpl< VT >::_min.

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

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.

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

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

Sets the bounding box extents.

References osg::BoundingBoxImpl< VT >::_max, and osg::BoundingBoxImpl< VT >::_min.

template<typename VT>
bool osg::BoundingBoxImpl< VT >::valid ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::xMax ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::xMax ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::xMin ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::xMin ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::yMax ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::yMax ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::yMin ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::yMin ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::zMax ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::zMax ( ) const
inline
template<typename VT>
value_type& osg::BoundingBoxImpl< VT >::zMin ( )
inline
template<typename VT>
value_type osg::BoundingBoxImpl< VT >::zMin ( ) const
inline

Member Data Documentation

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

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

osg logo
Generated at Tue Sep 4 2012 16:26:57 for the OpenSceneGraph by doxygen 1.8.1.2.