Open Inventor Release 2024.1.0
 
Loading...
Searching...
No Matches
SbBox3f Class Reference

3D box class. More...

#include <Inventor/SbBox.h>

+ Inheritance diagram for SbBox3f:

Public Member Functions

 SbBox3f ()
 Constructor for a 3D float box.
 
 SbBox3f (float xmin, float ymin, float zmin, float xmax, float ymax, float zmax)
 Constructor for a 3D float box.
 
 SbBox3f (const SbVec3f &_min, const SbVec3f &_max)
 Constructor for a 3D float box.
 
 ~SbBox3f ()
 Destructor.
 
const SbVec3fgetMin () const
 Returns the minimum point of the box.
 
SbVec3fgetMin ()
 Returns the minimum point of the box.
 
const SbVec3fgetMax () const
 Returns the maximum point of the box.
 
SbVec3fgetMax ()
 Returns the maximum point of the box.
 
SbVec3f getCenter () const
 Returns the center of the box.
 
void extendBy (const SbVec3f &pt)
 Extends this box (if necessary) to contain the specified point.
 
void extendBy (const SbBox3f &bb)
 Extends this box (if necessary) to contain the specified box.
 
SbBool intersect (const SbVec3f &pt) const
 Returns TRUE if the specified point intersects this box.
 
SbBool intersect (const SbBox3f &bb) const
 Returns TRUE if the specified box intersects this box.
 
SbBox3f intersection (const SbBox3f &box) const
 Returns the intersection of the specified box with this box.
 
SbBool contains (const SbBox3f &bb) const
 Returns TRUE if the specified box is fully contained inside this box.
 
SbBool outside (const SbMatrix &MVP, int &cullBits) const
 Returns TRUE if bounding box is completely outside the view-volume defined by the model+view+projection matrix given.
 
void setBounds (float xmin, float ymin, float zmin, float xmax, float ymax, float zmax)
 Sets the corners of the box.
 
void setBounds (const SbVec3f &_min, const SbVec3f &_max)
 Sets the corners of the box.
 
void getBounds (float &xmin, float &ymin, float &zmin, float &xmax, float &ymax, float &zmax) const
 Gets the corners of the box.
 
void getBounds (SbVec3f &_min, SbVec3f &_max) const
 Gets the corners of the box.
 
SbVec3f getClosestPoint (const SbVec3f &point) const
 Returns the closest point on the box to the given point.
 
void getOrigin (float &originX, float &originY, float &originZ) const
 Gets box origin which is the same as the minimum corner of the box.
 
void getSize (float &sizeX, float &sizeY, float &sizeZ) const
 Gets box size.
 
SbVec3f getSize () const
 Gets box size.
 
void makeEmpty ()
 Makes an empty box.
 
SbBool isEmpty () const
 Returns TRUE if the box is empty, and FALSE otherwise.
 
SbBool hasVolume () const
 Returns TRUE if all three dimensions of the box have positive size, and FALSE otherwise.
 
void getSpan (const SbVec3f &direction, float &dMin, float &dMax) const
 Finds the span of a box along a specified direction.
 
void transform (const SbMatrix &m)
 Transforms box by matrix, enlarging box to contain result.
 
float getVolume () const
 Returns the volume of the box.
 
template<typename T >
 SbBox3f (const T &b)
 Constructor that converts an arbitrary SbBox3 to an SbBox3f.
 
float computeMaxDistance2 (const SbVec3f &p) const
 Returns the squared maximum distance between a point and the 8 bounding box's vertices.
 
SbBool triangleBoxOverlap (const SbVec3f &u0, const SbVec3f &u1, const SbVec3f &u2) const
 Return true if the given triangle intersects the bounding box.
 

Friends

int operator== (const SbBox3f &b1, const SbBox3f &b2)
 Equality comparison.
 
int operator!= (const SbBox3f &b1, const SbBox3f &b2)
 Inequality comparison.
 
std::ostream & operator<< (std::ostream &os, const SbBox3f &b)
 Writes the box to the specified output stream.
 

Detailed Description

3D box class.

3D box which has planes parallel to the major axes and is specified by two points on a diagonal. This class is part of the standard Open Inventor datatype classes and is used as input and output to geometry operations (see SoGetBoundingBoxAction).

SEE ALSO

SbXfBox3f, SbBox2f, SbBox2s, SbVec3f, SbVec2f, SbVec2s, SbMatrix, SoGetBoundingBoxAction

Definition at line 649 of file SbBox.h.

Constructor & Destructor Documentation

◆ SbBox3f() [1/4]

SbBox3f::SbBox3f ( )
inline

Constructor for a 3D float box.

The box is initially empty.

Definition at line 655 of file SbBox.h.

◆ SbBox3f() [2/4]

SbBox3f::SbBox3f ( float  xmin,
float  ymin,
float  zmin,
float  xmax,
float  ymax,
float  zmax 
)
inline

Constructor for a 3D float box.

xmin , ymin , zmin , xmax , ymax and zmax are the bounds of the box.

Definition at line 662 of file SbBox.h.

◆ SbBox3f() [3/4]

SbBox3f::SbBox3f ( const SbVec3f _min,
const SbVec3f _max 
)
inline

Constructor for a 3D float box.

m_min and m_max are the corners of the diagonal that define the box.

Definition at line 670 of file SbBox.h.

◆ ~SbBox3f()

SbBox3f::~SbBox3f ( )
inline

Destructor.

Definition at line 676 of file SbBox.h.

◆ SbBox3f() [4/4]

template<typename T >
SbBox3f::SbBox3f ( const T &  b)
inlineexplicit

Constructor that converts an arbitrary SbBox3 to an SbBox3f.

Definition at line 914 of file SbBox.h.

Member Function Documentation

◆ computeMaxDistance2()

float SbBox3f::computeMaxDistance2 ( const SbVec3f p) const

Returns the squared maximum distance between a point and the 8 bounding box's vertices.

◆ contains()

SbBool SbBox3f::contains ( const SbBox3f bb) const
inline

Returns TRUE if the specified box is fully contained inside this box.

Definition at line 757 of file SbBox.h.

◆ extendBy() [1/2]

void SbBox3f::extendBy ( const SbBox3f bb)

Extends this box (if necessary) to contain the specified box.

◆ extendBy() [2/2]

void SbBox3f::extendBy ( const SbVec3f pt)
inline

Extends this box (if necessary) to contain the specified point.

Definition at line 717 of file SbBox.h.

◆ getBounds() [1/2]

void SbBox3f::getBounds ( float &  xmin,
float &  ymin,
float &  zmin,
float &  xmax,
float &  ymax,
float &  zmax 
) const
inline

Gets the corners of the box.

Definition at line 802 of file SbBox.h.

◆ getBounds() [2/2]

void SbBox3f::getBounds ( SbVec3f _min,
SbVec3f _max 
) const
inline

Gets the corners of the box.

Definition at line 810 of file SbBox.h.

◆ getCenter()

SbVec3f SbBox3f::getCenter ( ) const

Returns the center of the box.

◆ getClosestPoint()

SbVec3f SbBox3f::getClosestPoint ( const SbVec3f point) const

Returns the closest point on the box to the given point.

(Returns the point on the center of the Z face if passed the center.)

◆ getMax() [1/2]

SbVec3f & SbBox3f::getMax ( )
inline

Returns the maximum point of the box.

The maximum point is the corner of the box with the highest X, Y, and Z values.

Definition at line 706 of file SbBox.h.

◆ getMax() [2/2]

const SbVec3f & SbBox3f::getMax ( ) const
inline

Returns the maximum point of the box.

The maximum point is the corner of the box with the highest X, Y, and Z values.

Definition at line 699 of file SbBox.h.

◆ getMin() [1/2]

SbVec3f & SbBox3f::getMin ( )
inline

Returns the minimum point of the box.

The minimum point is the corner of the box with the lowest X, Y, and Z values.

Definition at line 691 of file SbBox.h.

◆ getMin() [2/2]

const SbVec3f & SbBox3f::getMin ( ) const
inline

Returns the minimum point of the box.

The minimum point is the corner of the box with the lowest X, Y, and Z values.

Definition at line 684 of file SbBox.h.

◆ getOrigin()

void SbBox3f::getOrigin ( float &  originX,
float &  originY,
float &  originZ 
) const
inline

Gets box origin which is the same as the minimum corner of the box.

Definition at line 822 of file SbBox.h.

◆ getSize() [1/2]

SbVec3f SbBox3f::getSize ( ) const
inline

Gets box size.

Definition at line 845 of file SbBox.h.

◆ getSize() [2/2]

void SbBox3f::getSize ( float &  sizeX,
float &  sizeY,
float &  sizeZ 
) const
inline

Gets box size.

Definition at line 829 of file SbBox.h.

◆ getSpan()

void SbBox3f::getSpan ( const SbVec3f direction,
float &  dMin,
float &  dMax 
) const

Finds the span of a box along a specified direction.

The span is the total distance the box occupies along a given direction. The total distance is returned in the form of a minimum and maximum distance from the origin of each of the corners of the box along the given direction. The difference between these two values is the span.

◆ getVolume()

float SbBox3f::getVolume ( ) const

Returns the volume of the box.

◆ hasVolume()

SbBool SbBox3f::hasVolume ( ) const
inline

Returns TRUE if all three dimensions of the box have positive size, and FALSE otherwise.

Definition at line 872 of file SbBox.h.

◆ intersect() [1/2]

SbBool SbBox3f::intersect ( const SbBox3f bb) const
inline

Returns TRUE if the specified box intersects this box.

Definition at line 740 of file SbBox.h.

◆ intersect() [2/2]

SbBool SbBox3f::intersect ( const SbVec3f pt) const

Returns TRUE if the specified point intersects this box.

◆ intersection()

SbBox3f SbBox3f::intersection ( const SbBox3f box) const

Returns the intersection of the specified box with this box.

Returned box is empty if there is no intersection.

◆ isEmpty()

SbBool SbBox3f::isEmpty ( ) const
inline

Returns TRUE if the box is empty, and FALSE otherwise.

Note: Setting the box to all zeros does not make it "empty". Use the makeEmpty() method. (This method only returns true if the maximum X value is less than the minimum X value.)

Definition at line 865 of file SbBox.h.

◆ makeEmpty()

void SbBox3f::makeEmpty ( )
inline

Makes an empty box.

Definition at line 856 of file SbBox.h.

◆ outside()

SbBool SbBox3f::outside ( const SbMatrix MVP,
int &  cullBits 
) const

Returns TRUE if bounding box is completely outside the view-volume defined by the model+view+projection matrix given.

"cullBits" keeps track of which view-volume clipping planes the box is completely inside of; if a 'parent' bounding box of this bounding box was found to be completely inside the left/right clipping planes, the low bit of cullBits will be set to zero, and this routine will not test this box against those planes. When cullBits is zero, it is a waste of time to call this function! Before calling this the first time, set cullBits to 7 (SoGLRenderAction and SoSeparator will handle this automatically for render culling).

◆ setBounds() [1/2]

void SbBox3f::setBounds ( const SbVec3f _min,
const SbVec3f _max 
)
inline

Sets the corners of the box.

Definition at line 796 of file SbBox.h.

◆ setBounds() [2/2]

void SbBox3f::setBounds ( float  xmin,
float  ymin,
float  zmin,
float  xmax,
float  ymax,
float  zmax 
)
inline

Sets the corners of the box.

Definition at line 789 of file SbBox.h.

◆ transform()

void SbBox3f::transform ( const SbMatrix m)

Transforms box by matrix, enlarging box to contain result.

◆ triangleBoxOverlap()

SbBool SbBox3f::triangleBoxOverlap ( const SbVec3f u0,
const SbVec3f u1,
const SbVec3f u2 
) const

Return true if the given triangle intersects the bounding box.

Note that intersection considers the whole box, not just the border. Therefore a triangle completely inside the box will return true.

Friends And Related Symbol Documentation

◆ operator!=

int operator!= ( const SbBox3f b1,
const SbBox3f b2 
)
friend

Inequality comparison.

Definition at line 902 of file SbBox.h.

◆ operator<<

std::ostream & operator<< ( std::ostream &  os,
const SbBox3f b 
)
friend

Writes the box to the specified output stream.

Definition at line 2539 of file SbBox.h.

◆ operator==

int operator== ( const SbBox3f b1,
const SbBox3f b2 
)
friend

Equality comparison.


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