Public Member Functions | Public Attributes

Box3 Class Reference

Search for all occurrences

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.

#include <box3.h>

Inheritance diagram for Box3:
Inheritance graph
[legend]

List of all members.

Public Member Functions

GEOMEXPORT  Box3 ()
  Box3 (const Point3 &p, const Point3 &q)
GEOMEXPORT void  Init ()
GEOMEXPORT void  MakeCube (const Point3 &p, float side)
Point3  Min () const
Point3  Max () const
Point3  Center () const
Point3  Width () const
GEOMEXPORT Point3  operator[] (int i) const
GEOMEXPORT Box3 operator+= (const Point3 &p)
GEOMEXPORT Box3 operator+= (const Box3 &b)
GEOMEXPORT void  Scale (float s)
GEOMEXPORT void  Translate (const Point3 &p)
GEOMEXPORT void  EnlargeBy (float s)
GEOMEXPORT void  IncludePoints (Point3 *pts, int numpoints, Matrix3 *tm=NULL)
GEOMEXPORT Box3  operator* (const Matrix3 &tm) const
GEOMEXPORT int  IsEmpty () const
GEOMEXPORT int  Contains (const Point3 &p) const
GEOMEXPORT int  Contains (const Box3 &b) const
GEOMEXPORT int  Intersects (const Box3 &b) const

Public Attributes

Point3  pmin
Point3  pmax

Constructor & Destructor Documentation

GEOMEXPORT 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

GEOMEXPORT 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().
GEOMEXPORT 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); }
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT void IncludePoints ( Point3 pts,
int  numpoints,
Matrix3 tm = NULL 
)
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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.
GEOMEXPORT 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:
GEOMEXPORT int Intersects ( const Box3 b ) const

Member Data Documentation


Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3
Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3 Box3