OpenWalnut  1.4.0
Public Types | Public Member Functions | Private Member Functions
WBoundingBoxImpl< VT > Class Template Reference

Represents a axis parallel bounding box and provides some useful operations with them. More...

#include <WBoundingBox.h>

+ Inheritance diagram for WBoundingBoxImpl< VT >:

List of all members.

Public Types

typedef osg::BoundingBoxImpl
< VT >::vec_type 
vec_type
 Vertex type for min and max positions of this box.
typedef osg::BoundingBoxImpl
< VT >::value_type 
value_type
 Value type of the vertex type for example double, float, etc.

Public Member Functions

 WBoundingBoxImpl ()
 Default constructor.
 WBoundingBoxImpl (value_type xmin, value_type ymin, value_type zmin, value_type xmax, value_type ymax, value_type zmax)
 Wrapps the component wise bounding box constructor from osg::BoundingBox.
 WBoundingBoxImpl (const vec_type &min, const vec_type &max)
 Constructs a bounding box by min and max positions.
 WBoundingBoxImpl (const WBoundingBoxImpl &bb)
 Copy construct using a given bounding box.
 WBoundingBoxImpl (const osg::BoundingSphereImpl< VT > &bs)
 Create BoundinmgBox using a given sphere.
virtual ~WBoundingBoxImpl ()
 Destructs this instance.
void reset ()
 Resets this box to an initial state where max is FLT_MIN and min FLT_MAX.
value_type radiusSquare () const
 Calculates and returns the squared length of the bounding box radius.
osg::BoundingBox toOSGBB () const
 Explicit type conversion function to use a WBoundingBox as osg::BoundingBox.
void expandBy (const WBoundingBoxImpl< VT > &bb)
 Expands this bounding box to include the given bounding box.
bool intersects (const WBoundingBoxImpl< VT > &bb) const
 Checks for intersection of this bounding box with the specified bounding box.
value_type minDistance (const WBoundingBoxImpl< VT > &bb) const
 Computes the minimal distance of tow axis parallel bounding boxes.
const vec_typegetMin () const
 Gives the front lower left aka minimum corner.
const vec_typegetMax () const
 Gives the back upper right aka maximum corner.

Private Member Functions

double intervalDistance (double a0, double a1, double b0, double b1) const
 Checks if the two given intervals intersect and computes the distance between them.

Detailed Description

template<class VT>
class WBoundingBoxImpl< VT >

Represents a axis parallel bounding box and provides some useful operations with them.

Notes:
Reason for subclassing: We don't want _min and _max member variables to be public.
Notes:
Reason for not having a private osg::BoundingBox member is, we don't have to wrap many member functions and can make use of the using directive. A downside on this is, we cannot automatical cast to osg::BoundingBox even if we provide a cast operator! Hence when we need this we will provide a toOsgBB() member function.

Definition at line 47 of file WBoundingBox.h.


Member Typedef Documentation

template<class VT>
typedef osg::BoundingBoxImpl< VT >::value_type WBoundingBoxImpl< VT >::value_type

Value type of the vertex type for example double, float, etc.

Definition at line 58 of file WBoundingBox.h.

template<class VT>
typedef osg::BoundingBoxImpl< VT >::vec_type WBoundingBoxImpl< VT >::vec_type

Vertex type for min and max positions of this box.

Definition at line 53 of file WBoundingBox.h.


Constructor & Destructor Documentation

template<class VT >
WBoundingBoxImpl< VT >::WBoundingBoxImpl ( ) [inline]

Default constructor.

Definition at line 199 of file WBoundingBox.h.

template<class VT >
WBoundingBoxImpl< VT >::WBoundingBoxImpl ( value_type  xmin,
value_type  ymin,
value_type  zmin,
value_type  xmax,
value_type  ymax,
value_type  zmax 
) [inline]

Wrapps the component wise bounding box constructor from osg::BoundingBox.

Parameters:
xminMinimal x coordinate
yminMinimal y coordinate
zminMinimal z coordinate
xmaxMaximal x coordinate
ymaxMaximal y coordinate
zmaxMaximal z coordinate

Definition at line 205 of file WBoundingBox.h.

template<class VT >
WBoundingBoxImpl< VT >::WBoundingBoxImpl ( const vec_type min,
const vec_type max 
) [inline]

Constructs a bounding box by min and max positions.

Parameters:
minPosition containing minx miny and minz coordinates.
maxPosition containing maxx maxy and maxz coordinates.

Definition at line 211 of file WBoundingBox.h.

template<class VT >
WBoundingBoxImpl< VT >::WBoundingBoxImpl ( const WBoundingBoxImpl< VT > &  bb) [inline]

Copy construct using a given bounding box.

Parameters:
bbthe source bb

Definition at line 224 of file WBoundingBox.h.

template<class VT>
WBoundingBoxImpl< VT >::WBoundingBoxImpl ( const osg::BoundingSphereImpl< VT > &  bs) [inline, explicit]

Create BoundinmgBox using a given sphere.

Parameters:
bsthe sphere

Definition at line 217 of file WBoundingBox.h.

template<class VT >
WBoundingBoxImpl< VT >::~WBoundingBoxImpl ( ) [inline, virtual]

Destructs this instance.

Definition at line 230 of file WBoundingBox.h.


Member Function Documentation

template<class VT>
void WBoundingBoxImpl< VT >::expandBy ( const WBoundingBoxImpl< VT > &  bb) [inline]
template<class VT >
const WBoundingBoxImpl< VT >::vec_type & WBoundingBoxImpl< VT >::getMax ( ) const [inline]

Gives the back upper right aka maximum corner.

Returns:
Maximum corner.

Definition at line 321 of file WBoundingBox.h.

Referenced by wge::generateBoundingBoxGeode(), and wge::generateSolidBoundingBoxNode().

template<class VT >
const WBoundingBoxImpl< VT >::vec_type & WBoundingBoxImpl< VT >::getMin ( ) const [inline]

Gives the front lower left aka minimum corner.

Returns:
Minimum corner.

Definition at line 315 of file WBoundingBox.h.

Referenced by wge::generateBoundingBoxGeode(), and wge::generateSolidBoundingBoxNode().

template<class VT>
bool WBoundingBoxImpl< VT >::intersects ( const WBoundingBoxImpl< VT > &  bb) const [inline]

Checks for intersection of this bounding box with the specified bounding box.

Parameters:
bbThe other bouding box to tetst with.
Returns:
True if they intersect, false otherwise.

Definition at line 259 of file WBoundingBox.h.

Referenced by WBoundingBoxTest::testForwardingFunctions().

template<class VT >
double WBoundingBoxImpl< VT >::intervalDistance ( double  a0,
double  a1,
double  b0,
double  b1 
) const [inline, private]

Checks if the two given intervals intersect and computes the distance between them.

Parameters:
a0lower bound of the first interval
a1upper bound of the first interval
b0lower bound of the second interval
b1upper bound if the second interval
Returns:
The distance between those intervals if they don't overlap, zero otherwise

Definition at line 265 of file WBoundingBox.h.

template<class VT>
WBoundingBoxImpl< VT >::value_type WBoundingBoxImpl< VT >::minDistance ( const WBoundingBoxImpl< VT > &  bb) const [inline]

Computes the minimal distance of tow axis parallel bounding boxes.

Parameters:
bbThe other bounding box.
Returns:
Zero if they intersect, otherwise their minimal distance.

Definition at line 279 of file WBoundingBox.h.

Referenced by WBoundingBoxTest::testCommutativeIntervalDistance(), and WBoundingBoxTest::testMinimalDistanceBetweenTwoBB().

template<class VT >
WBoundingBoxImpl< VT >::value_type WBoundingBoxImpl< VT >::radiusSquare ( ) const [inline]

Calculates and returns the squared length of the bounding box radius.

Notes:
This is a wrapper call to osg::BoundingBoxImpl< VT >::radius2()
Returns:
squared bbox radius

Definition at line 241 of file WBoundingBox.h.

template<class VT >
void WBoundingBoxImpl< VT >::reset ( ) [inline]

Resets this box to an initial state where max is FLT_MIN and min FLT_MAX.

Notes:
This is a wrapper call to osg::BoundingBoxImpl< VT >::init()

Definition at line 235 of file WBoundingBox.h.

Referenced by WBoundingBoxTest::testForwardingFunctions().

template<class VT >
osg::BoundingBox WBoundingBoxImpl< VT >::toOSGBB ( ) const [inline]

Explicit type conversion function to use a WBoundingBox as osg::BoundingBox.

Returns:
A copy of this bounding box as osg::BoundingBox.

Definition at line 247 of file WBoundingBox.h.


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