3ds Max C++ API Reference
Box3 Class Reference

#include <box3.h>

Public Member Functions

 Box3 ()
 
 Box3 (const Point3 &p, const Point3 &q)
 
void Init ()
 
void MakeCube (const Point3 &p, float side)
 
Point3 Min () const
 
Point3 Max () const
 
Point3 Center () const
 
Point3 Width () const
 
Point3 operator[] (int i) const
 
Box3operator+= (const Point3 &p)
 
Box3operator+= (const Box3 &b)
 
void Scale (float s)
 
void Translate (const Point3 &p)
 
void EnlargeBy (float s)
 
void IncludePoints (Point3 *pts, int numpoints, Matrix3 *tm=nullptr)
 
Box3 operator* (const Matrix3 &tm) const
 
bool operator== (const Box3 &b) const
 
bool operator!= (const Box3 &b) const
 
bool IsEmpty () const
 
bool IsInitialized () const
 
bool Contains (const Point3 &p) const
 
bool Contains (const Box3 &b) const
 
bool Intersects (const Box3 &b) const
 
bool TriBoxOverlap (const Point3 vert0, const Point3 vert1, const Point3 vert2) const
 

Public Attributes

Point3 pmin
 
Point3 pmax
 

Detailed Description

See also
Class Point3, Class Matrix3.

Description:
This class represents a 3D box volume described by two 3D corner coordinates. Box3 provides methods that return individual coordinates of the box, scale and translate it, retrieve its center, modify its size, expand it to include points or other boxes, and determine if points are inside the box. All methods are implemented by the system.
Data Members:
Point3 pmin,pmax;

The corners of the 3D box.

Constructor & Destructor Documentation

◆ Box3() [1/2]

Box3 ( )
Remarks
Constructor. The corners of the box are initialized such that the box is 'empty' and 'uninitialized'. See IsEmpty() and IsInitialized().

◆ Box3() [2/2]

Box3 ( const Point3 p,
const Point3 q 
)
inline
Remarks
Constructor. The corners of the box are initialized to the points passed. pmin=p; pmax = q.
41  {
42  pmin = p;
43  pmax = q;
44  }
Point3 pmin
Definition: box3.h:34
Point3 pmax
Definition: box3.h:34

Member Function Documentation

◆ Init()

void Init ( )
Remarks
Initializes this box such that pmin is a very large value while pmax is a small value. Thus the box is 'empty' and 'uninitialized'. See IsEmpty() and IsInitialized().

◆ MakeCube()

void MakeCube ( const Point3 p,
float  side 
)
Remarks
Modifies this box such that half the side length is subtracted from pmin and added to pmax. This creates a cube with the specified center p and side length side.
Parameters:
const Point3& p

Specifies the center point of the cube.

float side

Specifies the side length.

◆ Min()

Point3 Min ( ) const
inline
Remarks
Returns the value of corner pmin.
63  {
64  return pmin;
65  }

◆ Max()

Point3 Max ( ) const
inline
Remarks
Returns the value of corner pmax.
68  {
69  return pmax;
70  }

◆ Center()

Point3 Center ( ) const
inline
Remarks
Returns the center of this Box3 as a Point3.
73  {
74  return (pmin + pmax) / (float)2.0;
75  }

◆ Width()

Point3 Width ( ) const
inline
Remarks
Returns the width of the box as a Point3. This is pmax-pmin.
79  {
80  return (pmax - pmin);
81  }

◆ operator[]()

Point3 operator[] ( int  i) const
Remarks
Operator[] returns the 'i-th' corner point:

Mapping : X Y Z

[0] : (min,min,min)

[1] : (max,min,min)

[2] : (min,max,min)

[3] : (max,max,min)

[4] : (min,min,max)

[5] : (max,min,max)

[6] : (min,max,max)

[7] : (max,max,max)
Parameters:
int i

Specifies the corner to retrieve (0 <= i <= 7)
Returns
The 'i-th' corner point as a Point3.

◆ operator+=() [1/2]

Box3& operator+= ( const Point3 p)
Remarks
Expands this Box3 to include the Point3 p.
Parameters:
const Point3& p

Specifies the point to expand the box to include.

◆ operator+=() [2/2]

Box3& operator+= ( const Box3 b)
Remarks
Expands this Box3 to include the Box3 b.
Parameters:
const Box3& b

Specifies the Box3 to expand this box to include.

◆ Scale()

void Scale ( float  s)
Remarks
Scales this box about its center by the specified scale.
Parameters:
float s

Specifies the scale factor for this Box3.

◆ Translate()

void Translate ( const Point3 p)
Remarks
Translates this box by the distance specified. The point is added to each corner.
Parameters:
const Point3 &p

Specifies the distance to translate the box.

◆ EnlargeBy()

void EnlargeBy ( float  s)
Remarks
Enlarges this box. A Point3 is created from s as Point3(s,s,s) and added to pmax and subtracted from pmin. If the box is 'empty', the box is centered at (0,0,0) and then enlarged.

◆ IncludePoints()

void IncludePoints ( Point3 pts,
int  numpoints,
Matrix3 tm = nullptr 
)

◆ operator*()

Box3 operator* ( const Matrix3 tm) const
Remarks
Returns a box that bounds the 8 transformed corners of the input box.
Parameters:
const Matrix3& tm

Specifies the matrix to transform the box corners by.

◆ operator==()

bool operator== ( const Box3 b) const
inline
Remarks
Equality operator. Determines whether b is equal to this box. Returns nonzero if the boxes are equal; 0 otherwise.
155  {
156  return (pmin == b.pmin && pmax == b.pmax);
157  }

◆ operator!=()

bool operator!= ( const Box3 b) const
inline
Remarks
Inequality operator. Determines whether b is different from this box. Returns true if the boxes are different.
161  {
162  return !(operator==(b));
163  }
bool operator==(const Box3 &b) const
Definition: box3.h:154

◆ IsEmpty()

bool IsEmpty ( ) const
Remarks
Determines if the box is empty. A box is considered empty if any component value of pmin is greater than the corresponding component value of pmax.
Returns
true if the box is empty; otherwise false.

◆ IsInitialized()

bool IsInitialized ( ) const
Remarks
Determines if the box is initialized. This indicates the box has had specific values set by the developer.
Returns
true if the box is initialized; otherwise false.

◆ Contains() [1/2]

bool Contains ( const Point3 p) const
Remarks
Determines if the specified point p is contained in this box.
Parameters:
const Point3& p

Specifies the point to check.
Returns
true if the specified point is contained in this box; otherwise false.

◆ Contains() [2/2]

bool Contains ( const Box3 b) const
Remarks
Determines if the specified Box3 is contained totally within this box.
Parameters:
const Box3& b

Specifies the box to check.
Returns
true if the specified box is entirely contained within this box; otherwise false.
Operators:

◆ Intersects()

bool Intersects ( const Box3 b) const
Remarks
Determines if the specified Box3 intersects this box.
Parameters:
const Box3& b

Specifies the box to check.
Returns
true if the specified Box3 intersects this box; otherwise false.
Operators:

◆ TriBoxOverlap()

bool TriBoxOverlap ( const Point3  vert0,
const Point3  vert1,
const Point3  vert2 
) const
Remarks
Determines if the triangle specified by the tree points vert0, vert1, vert2 is overlapping with this box.
Returns
true if the specified triangle overlaps with this box in some way; otherwise false.

Member Data Documentation

◆ pmin

Point3 pmin

◆ pmax

Point3 pmax