Box3 Class Reference
 
 
 
Box3 Class Reference

This reference page is linked to from the following overview topics: Ring Array Creation Process, World Space Modifiers and Object Transformations, Selection Modifiers.


#include <box3.h>

Inheritance diagram for Box3:
MaxHeapOperators

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

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
Box3 operator+= (const Point3 &p)
Box3 operator+= (const Box3 &b)
void  Scale (float s)
void  Translate (const Point3 &p)
void  EnlargeBy (float s)
void  IncludePoints (Point3 *pts, int numpoints, Matrix3 *tm=NULL)
Box3  operator* (const Matrix3 &tm) const
int  IsEmpty () const
int  Contains (const Point3 &p) const
int  Contains (const Box3 &b) const
int  Intersects (const Box3 &b) const

Public Attributes

Point3  pmin
Point3  pmax

Constructor & Destructor Documentation

Box3 ( )
Remarks:
Constructor. The corners of the box are initialized such that the box is 'empty'. See IsEmpty().
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.
{ pmin = p; pmax = q;}

Member Function Documentation

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'. See IsEmpty().
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.
Point3 Min ( ) const [inline]
Remarks:
Returns the value of corner pmin.
{ return pmin; }
Point3 Max ( ) const [inline]
Remarks:
Returns the value of corner pmax.
{ return pmax; }
Point3 Center ( ) const [inline]
Remarks:
Returns the center of this Box3 as a Point3.
{ return(pmin+pmax)/(float)2.0; }
Point3 Width ( ) const [inline]
Remarks:
Returns the width of the box as a Point3. This is pmax-pmin.
{ return(pmax-pmin); }
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.
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.
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.
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.
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.
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.
void IncludePoints ( Point3 pts,
int  numpoints,
Matrix3 tm = NULL 
)
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.
int IsEmpty ( ) const
Remarks:
Determines if the box is empty. This indicates the box has not had specific values set by the developer.
Returns:
Nonzero if the box is empty; otherwise 0.
int 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:
Nonzero if the specified point is contained in this box; otherwise 0.
int 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:
Nonzero if the specified box is entirely contained within this box; otherwise 0.
Operators:
int Intersects ( const Box3 b ) const

Member Data Documentation