VTK
9.0.20210301
|
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... | |
vtkBoundingBox & | operator= (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 void | ComputeLocalBounds (vtkPoints *points, double u[3], double v[3], double w[3], double outputBounds[6]) |
Compute local bounds. More... | |
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] |
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.
Definition at line 35 of file vtkBoundingBox.h.
|
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 430 of file vtkBoundingBox.h.
|
inline |
Definition at line 435 of file vtkBoundingBox.h.
|
inline |
Definition at line 441 of file vtkBoundingBox.h.
|
inline |
Copy constructor.
Definition at line 448 of file vtkBoundingBox.h.
|
inline |
Assignment Operator.
Definition at line 459 of file vtkBoundingBox.h.
|
inline |
Equality operator.
Definition at line 471 of file vtkBoundingBox.h.
|
inline |
Definition at line 478 of file vtkBoundingBox.h.
|
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 420 of file vtkBoundingBox.h.
void vtkBoundingBox::SetBounds | ( | double | xMin, |
double | xMax, | ||
double | yMin, | ||
double | yMax, | ||
double | zMin, | ||
double | zMax | ||
) |
|
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.
|
static |
|
inline |
Definition at line 85 of file vtkBoundingBox.h.
|
inline |
Definition at line 86 of file vtkBoundingBox.h.
|
static |
Compute local bounds.
Not as fast as vtkPoints.getBounds() if u, v, w form a natural basis.
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.
|
inline |
Definition at line 483 of file vtkBoundingBox.h.
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.
|
inline |
Definition at line 488 of file vtkBoundingBox.h.
|
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 381 of file vtkBoundingBox.h.
|
inlinestatic |
Definition at line 387 of file vtkBoundingBox.h.
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.
void vtkBoundingBox::AddPoint | ( | double | px, |
double | py, | ||
double | pz | ||
) |
void vtkBoundingBox::AddBox | ( | const vtkBoundingBox & | bbox | ) |
Change the bounding box to be the union of itself and the specified bbox.
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).
|
inline |
Returns true if this instance is entirely contained by bbox.
Definition at line 411 of file vtkBoundingBox.h.
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.
int vtkBoundingBox::Intersects | ( | const vtkBoundingBox & | bbox | ) | const |
Returns 1 if the boxes intersect else returns 0.
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.
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.
int vtkBoundingBox::ComputeInnerDimension | ( | ) | const |
Returns the inner dimension of the bounding box.
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.
|
inline |
Get the bounds of the box (defined by VTK style).
Definition at line 425 of file vtkBoundingBox.h.
|
inline |
Definition at line 338 of file vtkBoundingBox.h.
|
inline |
Return the ith bounds of the box (defined by VTK style).
Definition at line 349 of file vtkBoundingBox.h.
|
inline |
Get the minimum point of the bounding box.
Definition at line 357 of file vtkBoundingBox.h.
|
inline |
Definition at line 493 of file vtkBoundingBox.h.
|
inline |
Definition at line 362 of file vtkBoundingBox.h.
|
inline |
Get the maximum point of the bounding box.
Definition at line 369 of file vtkBoundingBox.h.
|
inline |
Definition at line 500 of file vtkBoundingBox.h.
|
inline |
Definition at line 374 of file vtkBoundingBox.h.
|
inline |
Get the ith corner of the bounding box.
The points are ordered with i, then j, then k increasing.
Definition at line 529 of file vtkBoundingBox.h.
|
inline |
Returns 1 if the point is contained in the box else 0.
Definition at line 524 of file vtkBoundingBox.h.
|
inline |
Definition at line 507 of file vtkBoundingBox.h.
|
inline |
Get the center of the bounding box.
Definition at line 404 of file vtkBoundingBox.h.
|
inline |
Get the length of each side of the box.
Definition at line 397 of file vtkBoundingBox.h.
|
inline |
Return the length of the bounding box in the ith direction.
Definition at line 392 of file vtkBoundingBox.h.
double vtkBoundingBox::GetMaxLength | ( | ) | const |
Return the maximum length of the box.
double vtkBoundingBox::GetDiagonalLength | ( | ) | const |
Return the length of the diagonal.
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.
void vtkBoundingBox::Inflate | ( | double | deltaX, |
double | deltaY, | ||
double | deltaZ | ||
) |
void vtkBoundingBox::Inflate | ( | ) |
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).
void vtkBoundingBox::Scale | ( | double | sx, |
double | sy, | ||
double | sz | ||
) |
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.
void vtkBoundingBox::ScaleAboutCenter | ( | double | s[3] | ) |
void vtkBoundingBox::ScaleAboutCenter | ( | double | sx, |
double | sy, | ||
double | sz | ||
) |
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).
|
static |
Clamp the number of divisions to be less than or equal to a target number of bins, and the divs[i] >= 1.
|
inline |
Returns the box to its initialized state.
Definition at line 332 of file vtkBoundingBox.h.
|
protected |
Definition at line 329 of file vtkBoundingBox.h.
|
protected |
Definition at line 329 of file vtkBoundingBox.h.