---
name: "SbXfBox3d"
section: "3"
platform: "linux"
package: "coin"
version: "1:4.0.10-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/SbXfBox3d"
---

# SbXfBox3d(3)

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

## NAME

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

## SYNOPSIS

\#include \<Inventor/SbXfBox3d.h\>

Inherits **SbBox3d**.

### Public Member Functions

**SbXfBox3d** (void)\
 **SbXfBox3d** (const **SbVec3d** &boxmin, const **SbVec3d** &boxmax)\
 **SbXfBox3d** (const **SbBox3d** &box)\
 void **setTransform** (const **SbDPMatrix** &matrix)\
 const **SbDPMatrix** & **getTransform** (void) const\
 const **SbDPMatrix** & **getInverse** (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)\
 **SbBox3d** & **setBounds** (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)\
 **SbBox3d** & **setBounds** (const **SbVec3d** &minpoint, const **SbVec3d** &maxpoint)\
 **SbBox3d** & **setBounds** (const **SbBox3f** &box)\
 **SbBox3d** & **setBounds** (const **SbBox3s** &box)\
 **SbBox3d** & **setBounds** (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 **SbVec3d** & **getMin** (void) const\
 **SbVec3d** & **getMin** (void)\
 const **SbVec3d** & **getMax** (void) const\
 **SbVec3d** & **getMax** (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**\

Related Symbols inherited from **SbBox3d** int **operator==** (const **SbBox3d** &b1, const **SbBox3d** &b2)\
 int **operator!=** (const **SbBox3d** &b1, const **SbBox3d** &b2)\

## 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::SbXfBox3d (void )

The default constructor makes an empty box and identity matrix.

### 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::SbXfBox3d (const SbBox3d & box)

Constructs a box from the given **SbBox3d**.

The transformation is set to the identity matrix.

## Member Function Documentation

### void SbXfBox3d::setTransform (const SbDPMatrix & m)

Sets the transformation to the given **SbMatrix**.

### const SbDPMatrix & SbXfBox3d::getTransform (void ) const \[inline\]

Returns the current transformation matrix.

### const SbDPMatrix & SbXfBox3d::getInverse (void ) const

Returns the inverse of the current transformation matrix.

### SbVec3d SbXfBox3d::getCenter (void ) const

Return the transformed center point of the box.

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

### 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 is combined with *bb*.

### 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 bounding box calculation since the transformation matrix might change. See documentation in **SoGetBoundingBoxAction** for more details.

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

### SbBool SbXfBox3d::intersect (const SbBox3d & 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.

### 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

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

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

### void SbXfBox3d::transform (const SbDPMatrix & m)

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

### double SbXfBox3d::getVolume (void ) const

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

## Author

Generated automatically by Doxygen for Coin from the source code.
