30 #ifndef vtkBoundingBox_h 31 #define vtkBoundingBox_h 32 #include "vtkCommonDataModelModule.h" 46 double yMin,
double yMax,
47 double zMin,
double zMax);
73 void SetBounds(
const double bounds[6]);
74 void SetBounds(
double xMin,
double xMax,
75 double yMin,
double yMax,
76 double zMin,
double zMax);
84 void SetMinPoint(
double x,
double y,
double z);
85 void SetMinPoint(
double p[3]);
93 void SetMaxPoint(
double x,
double y,
double z);
94 void SetMaxPoint(
double p[3]);
103 static int IsValid(
const double bounds[6]);
112 void AddPoint(
double p[3]);
113 void AddPoint(
double px,
double py,
double pz);
125 void AddBounds(
const double bounds[]);
144 bool IntersectPlane(
double origin[3],
double normal[3]);
156 void GetBounds(
double bounds[6])
const;
157 void GetBounds(
double &xMin,
double &xMax,
158 double &yMin,
double &yMax,
159 double &zMin,
double &zMax)
const;
165 double GetBound(
int i)
const;
171 const double *GetMinPoint()
const;
172 void GetMinPoint(
double &x,
double &y,
double &z)
const;
179 const double *GetMaxPoint()
const;
180 void GetMaxPoint(
double &x,
double &y,
double &z)
const;
187 int ContainsPoint(
double p[3])
const;
188 int ContainsPoint(
double px,
double py,
double pz)
const;
194 void GetCenter(
double center[3])
const;
199 void GetLengths(
double lengths[3])
const;
204 double GetLength(
int i)
const;
209 double GetMaxLength()
const;
215 double GetDiagonalLength()
const;
225 void Inflate(
double delta);
236 void Scale(
double s[3]);
237 void Scale(
double sx,
double sy,
double sz);
258 double MinPnt[3], MaxPnt[3];
263 this->MinPnt[0] = this->MinPnt[1] = this->MinPnt[2] =
VTK_DOUBLE_MAX;
264 this->MaxPnt[0] = this->MaxPnt[1] = this->MaxPnt[2] =
VTK_DOUBLE_MIN;
268 double &yMin,
double &yMax,
269 double &zMin,
double &zMax)
const 271 xMin = this->MinPnt[0];
272 xMax = this->MaxPnt[0];
273 yMin = this->MinPnt[1];
274 yMax = this->MaxPnt[1];
275 zMin = this->MinPnt[2];
276 zMax = this->MaxPnt[2];
284 return ((i & 0x1) ? this->MaxPnt[i>>1] : this->MinPnt[i>>1]);
299 return ((this->MinPnt[0] <= this->MaxPnt[0]) &&
300 (this->MinPnt[1] <= this->MaxPnt[1]) &&
301 (this->MinPnt[2] <= this->MaxPnt[2]));
306 return (bounds[0] <= bounds[1] &&
307 bounds[2] <= bounds[3] &&
308 bounds[4] <= bounds[5]);
313 return this->MaxPnt[i] - this->MinPnt[i];
318 lengths[0] = this->GetLength(0);
319 lengths[1] = this->GetLength(1);
320 lengths[2] = this->GetLength(2);
325 center[0] = 0.5 * (this->MaxPnt[0] + this->MinPnt[0]);
326 center[1] = 0.5 * (this->MaxPnt[1] + this->MinPnt[1]);
327 center[2] = 0.5 * (this->MaxPnt[2] + this->MinPnt[2]);
332 this->SetBounds(bounds[0], bounds[1], bounds[2],
333 bounds[3], bounds[4], bounds[5]);
338 this->GetBounds(bounds[0], bounds[1], bounds[2],
339 bounds[3], bounds[4], bounds[5]);
350 this->SetBounds(bounds);
354 double yMin,
double yMax,
355 double zMin,
double zMax)
358 this->SetBounds(xMin, xMax, yMin, yMax, zMin, zMax);
363 this->MinPnt[0] = bbox.
MinPnt[0];
364 this->MinPnt[1] = bbox.
MinPnt[1];
365 this->MinPnt[2] = bbox.
MinPnt[2];
367 this->MaxPnt[0] = bbox.
MaxPnt[0];
368 this->MaxPnt[1] = bbox.
MaxPnt[1];
369 this->MaxPnt[2] = bbox.
MaxPnt[2];
374 this->MinPnt[0] = bbox.
MinPnt[0];
375 this->MinPnt[1] = bbox.
MinPnt[1];
376 this->MinPnt[2] = bbox.
MinPnt[2];
378 this->MaxPnt[0] = bbox.
MaxPnt[0];
379 this->MaxPnt[1] = bbox.
MaxPnt[1];
380 this->MaxPnt[2] = bbox.
MaxPnt[2];
386 return ((this->MinPnt[0] == bbox.
MinPnt[0]) &&
387 (this->MinPnt[1] == bbox.
MinPnt[1]) &&
388 (this->MinPnt[2] == bbox.
MinPnt[2]) &&
389 (this->MaxPnt[0] == bbox.
MaxPnt[0]) &&
390 (this->MaxPnt[1] == bbox.
MaxPnt[1]) &&
391 (this->MaxPnt[2] == bbox.
MaxPnt[2]));
396 return !((*this) == bbox);
401 this->SetMinPoint(p[0], p[1], p[2]);
406 this->SetMaxPoint(p[0], p[1], p[2]);
426 if ((px < this->MinPnt[0]) || (px > this->MaxPnt[0]))
430 if ((py < this->MinPnt[1]) || (py > this->MaxPnt[1]))
434 if ((pz < this->MinPnt[2]) || (pz > this->MaxPnt[2]))
443 return this->ContainsPoint(p[0], p[1], p[2]);
void GetBounds(double bounds[6]) const
Get the bounds of the box (defined by vtk style).
const double * GetMinPoint() const
Get the minimum point of the bounding box.
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 ...
bool operator!=(const vtkBoundingBox &bbox) const
Equality Operator.
void Reset()
Returns the box to its initialized state.
int ContainsPoint(double p[3]) const
Returns 1 if the point is contained in the box else 0.
bool operator==(const vtkBoundingBox &bbox) const
Equality Operator.
void GetCenter(double center[3]) const
Get the center of the bounding box.
int IsValid() const
Returns 1 if the bounds have been set and 0 if the box is in its initialized state which is an invert...
double GetBound(int i) const
Return the ith bounds of the box (defined by vtk style).
void GetLengths(double lengths[3]) const
Get the lengths of the box.
vtkBoundingBox & operator=(const vtkBoundingBox &bbox)
Assignment Operator.
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 m...
double GetLength(int i) const
Return the length in the ith direction.
void SetBounds(const double bounds[6])
Set the bounds explicitly of the box (vtk Style) Returns 1 if the box was changed else 0...
vtkBoundingBox()
Construct a bounding box with the min point set to VTK_DOUBLE_MAX and the max point set to VTK_DOUBLE...
VTKCOMMONCORE_EXPORT bool operator!=(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
VTKCOMMONCORE_EXPORT bool operator==(const vtkUnicodeString &lhs, const vtkUnicodeString &rhs)
const double * GetMaxPoint() const
Get the maximum point of the bounding box.
Fast Simple Class for dealing with 3D bounds.