VTK  9.0.20200709
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
vtkBoundingBox Class Reference

Fast, simple class for representing and operating on 3D bounds. More...

#include <vtkBoundingBox.h>

Public Member Functions

 vtkBoundingBox ()
 Construct a bounding box with the min point set to VTK_DOUBLE_MAX and the max point set to VTK_DOUBLE_MIN. More...
 
 vtkBoundingBox (const double bounds[6])
 
 vtkBoundingBox (double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
 
 vtkBoundingBox (const vtkBoundingBox &bbox)
 Copy constructor. More...
 
vtkBoundingBoxoperator= (const vtkBoundingBox &bbox)
 Assignment Operator. More...
 
bool operator== (const vtkBoundingBox &bbox) const
 Equality operator. More...
 
bool operator!= (const vtkBoundingBox &bbox) const
 
void SetBounds (const double bounds[6])
 Set the bounds explicitly of the box (using the VTK convention for representing a bounding box). More...
 
void SetBounds (double xMin, double xMax, double yMin, double yMax, double zMin, double zMax)
 
void ComputeBounds (vtkPoints *pts)
 
void ComputeBounds (vtkPoints *pts, unsigned char *ptUses)
 
void SetMinPoint (double x, double y, double z)
 Set the minimum point of the bounding box - if the min point is greater than the max point then the max point will also be changed. More...
 
void SetMinPoint (double p[3])
 
void SetMaxPoint (double x, double y, double z)
 Set the maximum point of the bounding box - if the max point is less than the min point then the min point will also be changed. More...
 
void SetMaxPoint (double p[3])
 
int IsValid () const
 Returns 1 if the bounds have been set and 0 if the box is in its initialized state which is an inverted state. More...
 
void AddPoint (double p[3])
 Change bounding box so it includes the point p. More...
 
void AddPoint (double px, double py, double pz)
 
void AddBox (const vtkBoundingBox &bbox)
 Change the bounding box to be the union of itself and the specified bbox. More...
 
void AddBounds (const double bounds[])
 Adjust the bounding box so it contains the specified bounds (defined by the VTK representation (xmin,xmax, ymin,ymax, zmin,zmax). More...
 
bool IsSubsetOf (const vtkBoundingBox &bbox) const
 Returns true if this instance is entirely contained by bbox. More...
 
int IntersectBox (const vtkBoundingBox &bbox)
 Intersect this box with bbox. More...
 
int Intersects (const vtkBoundingBox &bbox) const
 Returns 1 if the boxes intersect else returns 0. More...
 
bool IntersectPlane (double origin[3], double normal[3])
 Intersect this box with the half space defined by plane. More...
 
bool IntersectsSphere (double center[3], double squaredRadius) const
 Intersect this box with a sphere. More...
 
int ComputeInnerDimension () const
 Returns the inner dimension of the bounding box. More...
 
int Contains (const vtkBoundingBox &bbox) const
 Returns 1 if the min and max points of bbox are contained within the bounds of the specified box, else returns 0. More...
 
void GetBounds (double bounds[6]) const
 Get the bounds of the box (defined by VTK style). More...
 
void GetBounds (double &xMin, double &xMax, double &yMin, double &yMax, double &zMin, double &zMax) const
 
double GetBound (int i) const
 Return the ith bounds of the box (defined by VTK style). More...
 
const double * GetMinPoint () const
 Get the minimum point of the bounding box. More...
 
void GetMinPoint (double &x, double &y, double &z) const
 
void GetMinPoint (double x[3]) const
 
const double * GetMaxPoint () const
 Get the maximum point of the bounding box. More...
 
void GetMaxPoint (double &x, double &y, double &z) const
 
void GetMaxPoint (double x[3]) const
 
void GetCorner (int corner, double p[3]) const
 Get the ith corner of the bounding box. More...
 
vtkTypeBool ContainsPoint (double p[3]) const
 Returns 1 if the point is contained in the box else 0. More...
 
vtkTypeBool ContainsPoint (double px, double py, double pz) const
 
void GetCenter (double center[3]) const
 Get the center of the bounding box. More...
 
void GetLengths (double lengths[3]) const
 Get the length of each side of the box. More...
 
double GetLength (int i) const
 Return the length of the bounding box in the ith direction. More...
 
double GetMaxLength () const
 Return the maximum length of the box. More...
 
double GetDiagonalLength () const
 Return the length of the diagonal. More...
 
void Inflate (double delta)
 Expand the bounding box. More...
 
void Inflate (double deltaX, double deltaY, double deltaZ)
 
void Inflate ()
 
void Scale (double s[3])
 Scale each dimension of the box by some given factor. More...
 
void Scale (double sx, double sy, double sz)
 
void ScaleAboutCenter (double s)
 Scale each dimension of the box by some given factor, with the origin of the bounding box the center of the scaling. More...
 
void ScaleAboutCenter (double s[3])
 
void ScaleAboutCenter (double sx, double sy, double sz)
 
vtkIdType ComputeDivisions (vtkIdType totalBins, double bounds[6], int divs[3]) const
 Compute the number of divisions in the x-y-z directions given a psoitive, target number of total bins (i.e., product of divisions in the x-y-z directions). More...
 
void Reset ()
 Returns the box to its initialized state. More...
 

Static Public Member Functions

static void ComputeBounds (vtkPoints *pts, double bounds[6])
 Compute the bounding box from an array of vtkPoints. More...
 
static void ComputeBounds (vtkPoints *pts, const unsigned char *ptUses, double bounds[6])
 
static int IsValid (const double bounds[6])
 
static void ClampDivisions (vtkIdType targetBins, int divs[3])
 Clamp the number of divisions to be less than or equal to a target number of bins, and the divs[i] >= 1. More...
 

Protected Attributes

double MinPnt [3]
 
double MaxPnt [3]
 

Detailed Description

Fast, simple class for representing and operating on 3D bounds.

vtkBoundingBox maintains and performs operations on a 3D axis aligned bounding box. It is very light weight and many of the member functions are in-lined so it is very fast. It is not derived from vtkObject so it can be allocated on the stack.

See also
vtkBox

Definition at line 35 of file vtkBoundingBox.h.

Constructor & Destructor Documentation

◆ vtkBoundingBox() [1/4]

vtkBoundingBox::vtkBoundingBox ( )
inline

Construct a bounding box with the min point set to VTK_DOUBLE_MAX and the max point set to VTK_DOUBLE_MIN.

Definition at line 421 of file vtkBoundingBox.h.

◆ vtkBoundingBox() [2/4]

vtkBoundingBox::vtkBoundingBox ( const double  bounds[6])
inline

Definition at line 426 of file vtkBoundingBox.h.

◆ vtkBoundingBox() [3/4]

vtkBoundingBox::vtkBoundingBox ( double  xMin,
double  xMax,
double  yMin,
double  yMax,
double  zMin,
double  zMax 
)
inline

Definition at line 432 of file vtkBoundingBox.h.

◆ vtkBoundingBox() [4/4]

vtkBoundingBox::vtkBoundingBox ( const vtkBoundingBox bbox)
inline

Copy constructor.

Definition at line 439 of file vtkBoundingBox.h.

Member Function Documentation

◆ operator=()

vtkBoundingBox & vtkBoundingBox::operator= ( const vtkBoundingBox bbox)
inline

Assignment Operator.

Definition at line 450 of file vtkBoundingBox.h.

◆ operator==()

bool vtkBoundingBox::operator== ( const vtkBoundingBox bbox) const
inline

Equality operator.

Definition at line 462 of file vtkBoundingBox.h.

◆ operator!=()

bool vtkBoundingBox::operator!= ( const vtkBoundingBox bbox) const
inline

Definition at line 469 of file vtkBoundingBox.h.

◆ SetBounds() [1/2]

void vtkBoundingBox::SetBounds ( const double  bounds[6])
inline

Set the bounds explicitly of the box (using the VTK convention for representing a bounding box).

Returns 1 if the box was changed else 0.

Definition at line 411 of file vtkBoundingBox.h.

◆ SetBounds() [2/2]

void vtkBoundingBox::SetBounds ( double  xMin,
double  xMax,
double  yMin,
double  yMax,
double  zMin,
double  zMax 
)

◆ ComputeBounds() [1/4]

static void vtkBoundingBox::ComputeBounds ( vtkPoints pts,
double  bounds[6] 
)
static

Compute the bounding box from an array of vtkPoints.

It uses a fast path when possible. The second signature (with point uses) only considers points with ptUses[i] != 0 in the bounds calculation. The non-static ComputeBounds() methods update the current bounds of an instance of this class.

◆ ComputeBounds() [2/4]

static void vtkBoundingBox::ComputeBounds ( vtkPoints pts,
const unsigned char *  ptUses,
double  bounds[6] 
)
static

◆ ComputeBounds() [3/4]

void vtkBoundingBox::ComputeBounds ( vtkPoints pts)
inline

Definition at line 85 of file vtkBoundingBox.h.

◆ ComputeBounds() [4/4]

void vtkBoundingBox::ComputeBounds ( vtkPoints pts,
unsigned char *  ptUses 
)
inline

Definition at line 86 of file vtkBoundingBox.h.

◆ SetMinPoint() [1/2]

void vtkBoundingBox::SetMinPoint ( double  x,
double  y,
double  z 
)

Set the minimum point of the bounding box - if the min point is greater than the max point then the max point will also be changed.

◆ SetMinPoint() [2/2]

void vtkBoundingBox::SetMinPoint ( double  p[3])
inline

Definition at line 474 of file vtkBoundingBox.h.

◆ SetMaxPoint() [1/2]

void vtkBoundingBox::SetMaxPoint ( double  x,
double  y,
double  z 
)

Set the maximum point of the bounding box - if the max point is less than the min point then the min point will also be changed.

◆ SetMaxPoint() [2/2]

void vtkBoundingBox::SetMaxPoint ( double  p[3])
inline

Definition at line 479 of file vtkBoundingBox.h.

◆ IsValid() [1/2]

int vtkBoundingBox::IsValid ( ) const
inline

Returns 1 if the bounds have been set and 0 if the box is in its initialized state which is an inverted state.

Definition at line 372 of file vtkBoundingBox.h.

◆ IsValid() [2/2]

int vtkBoundingBox::IsValid ( const double  bounds[6])
inlinestatic

Definition at line 378 of file vtkBoundingBox.h.

◆ AddPoint() [1/2]

void vtkBoundingBox::AddPoint ( double  p[3])

Change bounding box so it includes the point p.

Note that the bounding box may have 0 volume if its bounds were just initialized.

◆ AddPoint() [2/2]

void vtkBoundingBox::AddPoint ( double  px,
double  py,
double  pz 
)

◆ AddBox()

void vtkBoundingBox::AddBox ( const vtkBoundingBox bbox)

Change the bounding box to be the union of itself and the specified bbox.

◆ AddBounds()

void vtkBoundingBox::AddBounds ( const double  bounds[])

Adjust the bounding box so it contains the specified bounds (defined by the VTK representation (xmin,xmax, ymin,ymax, zmin,zmax).

◆ IsSubsetOf()

bool vtkBoundingBox::IsSubsetOf ( const vtkBoundingBox bbox) const
inline

Returns true if this instance is entirely contained by bbox.

Definition at line 402 of file vtkBoundingBox.h.

◆ IntersectBox()

int vtkBoundingBox::IntersectBox ( const vtkBoundingBox bbox)

Intersect this box with bbox.

The method returns 1 if both boxes are valid and they do have overlap else it will return 0. If 0 is returned the box has not been modified.

◆ Intersects()

int vtkBoundingBox::Intersects ( const vtkBoundingBox bbox) const

Returns 1 if the boxes intersect else returns 0.

◆ IntersectPlane()

bool vtkBoundingBox::IntersectPlane ( double  origin[3],
double  normal[3] 
)

Intersect this box with the half space defined by plane.

Returns true if there is intersection—which implies that the box has been modified Returns false otherwise.

◆ IntersectsSphere()

bool vtkBoundingBox::IntersectsSphere ( double  center[3],
double  squaredRadius 
) const

Intersect this box with a sphere.

Parameters involve the center of the sphere and the squared radius.

◆ ComputeInnerDimension()

int vtkBoundingBox::ComputeInnerDimension ( ) const

Returns the inner dimension of the bounding box.

◆ Contains()

int vtkBoundingBox::Contains ( const vtkBoundingBox bbox) const

Returns 1 if the min and max points of bbox are contained within the bounds of the specified box, else returns 0.

◆ GetBounds() [1/2]

void vtkBoundingBox::GetBounds ( double  bounds[6]) const
inline

Get the bounds of the box (defined by VTK style).

Definition at line 416 of file vtkBoundingBox.h.

◆ GetBounds() [2/2]

void vtkBoundingBox::GetBounds ( double &  xMin,
double &  xMax,
double &  yMin,
double &  yMax,
double &  zMin,
double &  zMax 
) const
inline

Definition at line 329 of file vtkBoundingBox.h.

◆ GetBound()

double vtkBoundingBox::GetBound ( int  i) const
inline

Return the ith bounds of the box (defined by VTK style).

Definition at line 340 of file vtkBoundingBox.h.

◆ GetMinPoint() [1/3]

const double * vtkBoundingBox::GetMinPoint ( ) const
inline

Get the minimum point of the bounding box.

Definition at line 348 of file vtkBoundingBox.h.

◆ GetMinPoint() [2/3]

void vtkBoundingBox::GetMinPoint ( double &  x,
double &  y,
double &  z 
) const
inline

Definition at line 484 of file vtkBoundingBox.h.

◆ GetMinPoint() [3/3]

void vtkBoundingBox::GetMinPoint ( double  x[3]) const
inline

Definition at line 353 of file vtkBoundingBox.h.

◆ GetMaxPoint() [1/3]

const double * vtkBoundingBox::GetMaxPoint ( ) const
inline

Get the maximum point of the bounding box.

Definition at line 360 of file vtkBoundingBox.h.

◆ GetMaxPoint() [2/3]

void vtkBoundingBox::GetMaxPoint ( double &  x,
double &  y,
double &  z 
) const
inline

Definition at line 491 of file vtkBoundingBox.h.

◆ GetMaxPoint() [3/3]

void vtkBoundingBox::GetMaxPoint ( double  x[3]) const
inline

Definition at line 365 of file vtkBoundingBox.h.

◆ GetCorner()

void vtkBoundingBox::GetCorner ( int  corner,
double  p[3] 
) const
inline

Get the ith corner of the bounding box.

The points are ordered with i, then j, then k increasing.

Definition at line 520 of file vtkBoundingBox.h.

◆ ContainsPoint() [1/2]

vtkTypeBool vtkBoundingBox::ContainsPoint ( double  p[3]) const
inline

Returns 1 if the point is contained in the box else 0.

Definition at line 515 of file vtkBoundingBox.h.

◆ ContainsPoint() [2/2]

vtkTypeBool vtkBoundingBox::ContainsPoint ( double  px,
double  py,
double  pz 
) const
inline

Definition at line 498 of file vtkBoundingBox.h.

◆ GetCenter()

void vtkBoundingBox::GetCenter ( double  center[3]) const
inline

Get the center of the bounding box.

Definition at line 395 of file vtkBoundingBox.h.

◆ GetLengths()

void vtkBoundingBox::GetLengths ( double  lengths[3]) const
inline

Get the length of each side of the box.

Definition at line 388 of file vtkBoundingBox.h.

◆ GetLength()

double vtkBoundingBox::GetLength ( int  i) const
inline

Return the length of the bounding box in the ith direction.

Definition at line 383 of file vtkBoundingBox.h.

◆ GetMaxLength()

double vtkBoundingBox::GetMaxLength ( ) const

Return the maximum length of the box.

◆ GetDiagonalLength()

double vtkBoundingBox::GetDiagonalLength ( ) const

Return the length of the diagonal.

Precondition
not_empty: this->IsValid()

◆ Inflate() [1/3]

void vtkBoundingBox::Inflate ( double  delta)

Expand the bounding box.

Inflate(delta) expands by delta on each side, the box will grow by 2*delta in x, y, and z. Inflate(dx,dy,dz) expands by the given amounts in each of the x, y, z directions. Finally, Inflate() expands the bounds so that it has non-zero volume. Edges that are inflated are adjusted 1% of the longest edge. Or if an edge is zero length, the bounding box is inflated by 1 unit in that direction.

◆ Inflate() [2/3]

void vtkBoundingBox::Inflate ( double  deltaX,
double  deltaY,
double  deltaZ 
)

◆ Inflate() [3/3]

void vtkBoundingBox::Inflate ( )

◆ Scale() [1/2]

void vtkBoundingBox::Scale ( double  s[3])

Scale each dimension of the box by some given factor.

If the box is not valid, it stays unchanged. If the scalar factor is negative, bounds are flipped: for example, if (xMin,xMax)=(-2,4) and sx=-3, (xMin,xMax) becomes (-12,6).

◆ Scale() [2/2]

void vtkBoundingBox::Scale ( double  sx,
double  sy,
double  sz 
)

◆ ScaleAboutCenter() [1/3]

void vtkBoundingBox::ScaleAboutCenter ( double  s)

Scale each dimension of the box by some given factor, with the origin of the bounding box the center of the scaling.

If the box is not valid, it is not changed.

◆ ScaleAboutCenter() [2/3]

void vtkBoundingBox::ScaleAboutCenter ( double  s[3])

◆ ScaleAboutCenter() [3/3]

void vtkBoundingBox::ScaleAboutCenter ( double  sx,
double  sy,
double  sz 
)

◆ ComputeDivisions()

vtkIdType vtkBoundingBox::ComputeDivisions ( vtkIdType  totalBins,
double  bounds[6],
int  divs[3] 
) const

Compute the number of divisions in the x-y-z directions given a psoitive, target number of total bins (i.e., product of divisions in the x-y-z directions).

The computation is done in such a way as to create near cuboid bins. Also note that the returned bounds may be different than the bounds defined in this class, as the bounds in the x-y-z directions can never be <= 0. Note that the total number of divisions (divs[0]*divs[1]*divs[2]) will be less than or equal to the target number of bins (as long as totalBins>=1).

◆ ClampDivisions()

static void vtkBoundingBox::ClampDivisions ( vtkIdType  targetBins,
int  divs[3] 
)
static

Clamp the number of divisions to be less than or equal to a target number of bins, and the divs[i] >= 1.

◆ Reset()

void vtkBoundingBox::Reset ( )
inline

Returns the box to its initialized state.

Definition at line 323 of file vtkBoundingBox.h.

Member Data Documentation

◆ MinPnt

double vtkBoundingBox::MinPnt[3]
protected

Definition at line 320 of file vtkBoundingBox.h.

◆ MaxPnt

double vtkBoundingBox::MaxPnt[3]
protected

Definition at line 320 of file vtkBoundingBox.h.


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