Coin Logo Coin3D is Free Software,
published under the BSD 3-clause license.
https://bitbucket.org/Coin3D/
http://www.kongsberg.com/kogt/
SbXfBox3d Class Reference

The SbXfBox3d class is a 3 dimensional box with double precision coordinates and an attached transformation. More...

#include <Inventor/SbXfBox3d.h>

Inheritance diagram for SbXfBox3d:
SbBox3d

Public Member Functions

 SbXfBox3d (void)
 
 SbXfBox3d (const SbVec3d &boxmin, const SbVec3d &boxmax)
 
 SbXfBox3d (const SbBox3d &box)
 
void setTransform (const SbDPMatrix &matrix)
 
const SbDPMatrixgetTransform (void) const
 
const SbDPMatrixgetInverse (void) const
 
SbVec3d getCenter (void) const
 
void extendBy (const SbVec3d &pt)
 
void extendBy (const SbBox3d &bb)
 
void extendBy (const SbXfBox3d &bb)
 
SbBool intersect (const SbVec3d &pt) const
 
SbBool intersect (const SbBox3d &bb) const
 
SbBool intersect (const SbXfBox3d &bb) const
 
SbBox3d project (void) const
 
void getSpan (const SbVec3d &direction, double &dMin, double &dMax) const
 
void transform (const SbDPMatrix &matrix)
 
double getVolume (void) const
 
- Public Member Functions inherited from SbBox3d
 SbBox3d (void)
 
 SbBox3d (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
 
 SbBox3d (const SbVec3d &minpoint, const SbVec3d &maxpoint)
 
 SbBox3d (const SbBox3f &box)
 
 SbBox3d (const SbBox3s &box)
 
 SbBox3d (const SbBox3i32 &box)
 
SbBox3dsetBounds (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
 
SbBox3dsetBounds (const SbVec3d &minpoint, const SbVec3d &maxpoint)
 
SbBox3dsetBounds (const SbBox3f &box)
 
SbBox3dsetBounds (const SbBox3s &box)
 
SbBox3dsetBounds (const SbBox3i32 &box)
 
void getBounds (double &xmin, double &ymin, double &zmin, double &xmax, double &ymax, double &zmax) const
 
void getBounds (SbVec3d &minpoint, SbVec3d &maxpoint) const
 
const SbVec3dgetMin (void) const
 
SbVec3dgetMin (void)
 
const SbVec3dgetMax (void) const
 
SbVec3dgetMax (void)
 
void extendBy (const SbVec3d &pt)
 
void extendBy (const SbBox3d &box)
 
void transform (const SbDPMatrix &matrix)
 
void makeEmpty (void)
 
SbBool isEmpty (void) const
 
SbBool hasVolume (void) const
 
double getVolume (void) const
 
SbBool intersect (const SbVec3d &point) const
 
SbBool intersect (const SbBox3d &box) const
 
SbVec3d getClosestPoint (const SbVec3d &point) const
 
SbBool outside (const SbDPMatrix &mvp, int &cullbits) const
 
SbVec3d getCenter (void) const
 
void getOrigin (double &origoX, double &origoY, double &origoZ) const
 
void getSize (double &sizeX, double &sizeY, double &sizeZ) const
 
SbVec3d getSize (void) const
 
void getSpan (const SbVec3d &dir, double &dmin, double &dmax) const
 
void print (FILE *file) const
 

Additional Inherited Members

- Protected Attributes inherited from SbBox3d
SbVec3d minpt
 
SbVec3d maxpt
 

Detailed Description

The SbXfBox3d class is a 3 dimensional box with double precision coordinates and an attached transformation.

It provides storage for two box corners with double precision floating point coordinates, and for a double precision 4x4 transformation matrix.

See also
SbBox3d, SbDPMatrix, SbXfBox3f

Constructor & Destructor Documentation

◆ SbXfBox3d() [1/3]

SbXfBox3d::SbXfBox3d ( void  )

The default constructor makes an empty box and identity matrix.

◆ SbXfBox3d() [2/3]

SbXfBox3d::SbXfBox3d ( const SbVec3d boxmin,
const SbVec3d 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.

◆ SbXfBox3d() [3/3]

SbXfBox3d::SbXfBox3d ( const SbBox3d box)

Constructs a box from the given SbBox3d.

The transformation is set to the identity matrix.

Member Function Documentation

◆ setTransform()

void SbXfBox3d::setTransform ( const SbDPMatrix m)

Sets the transformation to the given SbMatrix.

◆ getTransform()

const SbDPMatrix & SbXfBox3d::getTransform ( void  ) const
inline

Returns the current transformation matrix.

◆ getInverse()

const SbDPMatrix & SbXfBox3d::getInverse ( void  ) const

Returns the inverse of the current transformation matrix.

◆ getCenter()

SbVec3d SbXfBox3d::getCenter ( void  ) const

Return the transformed center point of the box.

◆ extendBy() [1/3]

void SbXfBox3d::extendBy ( const SbVec3d 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() [2/3]

void SbXfBox3d::extendBy ( const SbBox3d 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's combined with bb.

◆ extendBy() [3/3]

void SbXfBox3d::extendBy ( const SbXfBox3d 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 bbox calculation since the transformation matrix might change. See documentation in SoGetBoundingBoxAction for more details.

◆ intersect() [1/3]

SbBool SbXfBox3d::intersect ( const SbVec3d pt) const

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

The point is assumed to be in transformed space.

◆ intersect() [2/3]

SbBool SbXfBox3d::intersect ( const SbBox3d bb) const

Check if the given box lies wholly or partly within the boundaries of this box.

The given box is assumed to be in transformed space.

◆ intersect() [3/3]

SbBool SbXfBox3d::intersect ( const SbXfBox3d 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

◆ project()

SbBox3d SbXfBox3d::project ( void  ) const

Project the SbXfBox3d into a SbBox3d.

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

◆ getSpan()

void SbXfBox3d::getSpan ( const SbVec3d direction,
double &  dMin,
double &  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.

◆ transform()

void SbXfBox3d::transform ( const SbDPMatrix m)

Overridden from SbBox3d, as the transformations are to be kept separate from the box in the SbXfBox3d class.

◆ getVolume()

double SbXfBox3d::getVolume ( void  ) const

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


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