Coin  4.0.3
Coin3D core library
Loading...
Searching...
No Matches
SbXfBox3f Class Reference

The SbXfBox3f class is a 3 dimensional box with floating point coordinates and an attached transformation. More...

#include <Inventor/SbXfBox3f.h>

Inheritance diagram for SbXfBox3f:
SbBox3f

Public Member Functions

 SbXfBox3f (const SbBox3f &box)
 
 SbXfBox3f (const SbVec3f &boxmin, const SbVec3f &boxmax)
 
 SbXfBox3f (void)
 
 ~SbXfBox3f ()
 
void extendBy (const SbBox3f &bb)
 
void extendBy (const SbVec3f &pt)
 
void extendBy (const SbXfBox3f &bb)
 
SbVec3f getCenter (void) const
 
const SbMatrixgetInverse (void) const
 
void getSpan (const SbVec3f &direction, float &dMin, float &dMax) const
 
const SbMatrixgetTransform (void) const
 
float getVolume (void) const
 
SbBool intersect (const SbBox3f &bb) const
 
SbBool intersect (const SbVec3f &pt) const
 
SbBool intersect (const SbXfBox3f &bb) const
 
void print (FILE *file) const
 
SbBox3f project (void) const
 
void setTransform (const SbMatrix &m)
 
void transform (const SbMatrix &m)
 
- Public Member Functions inherited from SbBox3f
 SbBox3f (const SbBox3d &box)
 
 SbBox3f (const SbBox3i32 &box)
 
 SbBox3f (const SbBox3s &box)
 
 SbBox3f (const SbVec3f &minpoint, const SbVec3f &maxpoint)
 
 SbBox3f (float xmin, float ymin, float zmin, float xmax, float ymax, float zmax)
 
 SbBox3f (void)
 
void extendBy (const SbBox3f &box)
 
void extendBy (const SbVec3f &pt)
 
void getBounds (float &xmin, float &ymin, float &zmin, float &xmax, float &ymax, float &zmax) const
 
void getBounds (SbVec3f &minpoint, SbVec3f &maxpoint) const
 
SbVec3f getCenter (void) const
 
SbVec3f getClosestPoint (const SbVec3f &point) const
 
SbVec3fgetMax (void)
 
const SbVec3fgetMax (void) const
 
SbVec3fgetMin (void)
 
const SbVec3fgetMin (void) const
 
void getOrigin (float &originX, float &originY, float &originZ) const
 
void getSize (float &sizeX, float &sizeY, float &sizeZ) const
 
SbVec3f getSize (void) const
 
void getSpan (const SbVec3f &dir, float &dmin, float &dmax) const
 
float getVolume (void) const
 
SbBool hasVolume (void) const
 
SbBool intersect (const SbBox3f &box) const
 
SbBool intersect (const SbVec3f &pt) const
 
SbBool isEmpty (void) const
 
void makeEmpty (void)
 
SbBool outside (const SbMatrix &mvp, int &cullbits) const
 
void print (FILE *file) const
 
SbBox3fsetBounds (const SbBox3d &box)
 
SbBox3fsetBounds (const SbBox3i32 &box)
 
SbBox3fsetBounds (const SbBox3s &box)
 
SbBox3fsetBounds (const SbVec3f &minpoint, const SbVec3f &maxpoint)
 
SbBox3fsetBounds (float xmin, float ymin, float zmin, float xmax, float ymax, float zmax)
 
void transform (const SbMatrix &matrix)
 

Additional Inherited Members

Detailed Description

The SbXfBox3f class is a 3 dimensional box with floating point coordinates and an attached transformation.

This box class is used by many other classes in Coin for data exchange. It provides storage for two box corners with floating point coordinates, and for a floating point 4x4 transformation matrix.

See also
SbBox2s, SbBox2f, SbBox2d, SbBox3s, SbBox3f, SbBox3d, SbMatrix.

Constructor & Destructor Documentation

◆ SbXfBox3f() [1/3]

SbXfBox3f::SbXfBox3f ( void )

The default constructor makes an empty box and identity matrix.

◆ SbXfBox3f() [2/3]

SbXfBox3f::SbXfBox3f ( const SbVec3f & boxmin,
const SbVec3f & boxmax )

Constructs a box with the given corners.

The coordinates of min should be less than the coordinates of max if you want to make a valid box.

◆ SbXfBox3f() [3/3]

SbXfBox3f::SbXfBox3f ( const SbBox3f & box)

Constructs a box from the given SbBox3f.

The transformation is set to the identity matrix.

◆ ~SbXfBox3f()

SbXfBox3f::~SbXfBox3f ( )

Default destructor does nothing.

Member Function Documentation

◆ extendBy() [1/3]

void SbXfBox3f::extendBy ( const SbBox3f & bb)

Extend the boundaries of the box by the given bb parameter. The given box is assumed to be in transformed space.

The two given boxes will be combined in such a way so that the resultant bounding box always has the smallest possible volume. To accomplish this, the transformation on this SbXfBox3f will sometimes be flattened before it is combined with bb.

◆ extendBy() [2/3]

void SbXfBox3f::extendBy ( const SbVec3f & pt)

Extend the boundaries of the box by the given point, i.e. make the point fit inside the box if it isn't already so.

The point is assumed to be in transformed space.

◆ extendBy() [3/3]

void SbXfBox3f::extendBy ( const SbXfBox3f & bb)

Extend the boundaries of the box by the given bb parameter.

The given box is assumed to be in transformed space.

Note: is not guaranteed to give an optimal result if used for bounding box calculation since the transformation matrix might change. See documentation in SoGetBoundingBoxAction for more details.

◆ getCenter()

SbVec3f SbXfBox3f::getCenter ( void ) const

Return the transformed center point of the box.

◆ getInverse()

const SbMatrix & SbXfBox3f::getInverse ( void ) const

Returns the inverse of the current transformation matrix.

◆ getSpan()

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

Find the span of the box in the given direction (i.e. how much room in the given direction the box needs). The distance is returned as the minimum and maximum distance from origo to the closest and furthest plane defined by the direction vector and each of the box' corners. The difference between these values gives the span.

◆ getTransform()

const SbMatrix & SbXfBox3f::getTransform ( void ) const

Returns the current transformation matrix.

◆ getVolume()

float SbXfBox3f::getVolume ( void ) const

Return box volume. Overridden from parent class to take into account the possibility of scaling in the transformation matrix.

◆ intersect() [1/3]

SbBool SbXfBox3f::intersect ( const SbBox3f & bb) const

Check if the given box lies entirely or partially within the boundaries of this box.

The given box is assumed to be in transformed space.

◆ intersect() [2/3]

SbBool SbXfBox3f::intersect ( const SbVec3f & pt) const

Check if the given point lies within the boundaries of this box.

The point is assumed to be in transformed space.

◆ intersect() [3/3]

SbBool SbXfBox3f::intersect ( const SbXfBox3f & xfbb) const

Check if two transformed boxes intersect.

This function is an extension for Coin, and it is not available in the original SGI Open Inventor v2.1 API.

Since
Coin 2.0

◆ print()

void SbXfBox3f::print ( FILE * fp) const

Dump the state of this object to the fp file stream. Only works in debug version of library, method does nothing in an optimized build.

◆ project()

SbBox3f SbXfBox3f::project ( void ) const

Project the SbXfBox3f into a SbBox3f.

This gives the same resulting SbBox3f as doing a SbBox3f::transform() with this transformation matrix as parameter.

◆ setTransform()

void SbXfBox3f::setTransform ( const SbMatrix & m)

Sets the transformation to the given SbMatrix.

◆ transform()

void SbXfBox3f::transform ( const SbMatrix & m)

Overridden from SbBox3f, as the transformations are to be kept separate from the box in the SbXfBox3f class.


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