Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

vgl_box_3d< Type > Class Template Reference

#include <vgl_box_3d.h>

List of all members.


Detailed Description

template<class Type>
class vgl_box_3d< Type >

Represents a cartesian 3D box.

A 3d box with sides aligned with x, y and z axes. Supports operations required of a bounding box for geometric volume tests.

A box can be empty; this is what the default constructor creates, or what is left after applying the empty() method. Use the add() methods to enlarge a box, and use the contains() methods to check for inclusion of a point or an other box.

To make the convex union of two boxes, use box1.add(box2).

                                   MaxPosition
                         |<--width-->|
                         O-----------O  ---
                        /           /|   ^
                       /           / |   |
                      O-----------O  | height
                      |       o   |  |   |
                      |  centroid |  |   v
                      |           |  O  ---
       Y              |           | /   /_____depth
       |   Z          |           |/   /
       |  /           O-----------O  ---
       | /         MinPosition
       O-----X
   
See also:
vgl_box_2d

Definition at line 63 of file vgl_box_3d.h.

Public Types

enum  point_type { centre = 0, min_pos, max_pos }

Public Member Functions

 vgl_box_3d ()
 Default constructor (creates empty box).
 vgl_box_3d (Type const min_position[3], Type const max_position[3])
 Construct using two corner points.
 vgl_box_3d (vgl_point_3d< Type > const &min_pos, vgl_point_3d< Type > const &max_pos)
 Construct using two corner points.
 vgl_box_3d (Type xmin, Type ymin, Type zmin, Type xmax, Type ymax, Type zmax)
 Construct from ranges in x,y,z (take care with order of inputs).
 vgl_box_3d (Type const ref_point[3], Type width, Type height, Type depth, point_type)
 Construct a box sized width x height x depth at a given reference point.
 vgl_box_3d (vgl_point_3d< Type > const &ref_point, Type width, Type height, Type depth, point_type)
 Construct a box sized width x height x depth at a given reference point.
bool operator== (vgl_box_3d< Type > const &b) const
 Equality test.
Type width () const
 Get width of this box (= x dimension).
Type height () const
 Get height of this box (= y dimension).
Type depth () const
 Get depth of this box (= z dimension).
Type volume () const
 Get volume of this box.
Type min_x () const
 Get min x.
Type min_y () const
 Get min y.
Type min_z () const
 Get min z.
Type max_x () const
 Get max x.
Type max_y () const
 Get max y.
Type max_z () const
 Get max z.
vgl_point_3d< Type > centroid () const
 Get the centroid point.
Type centroid_x () const
 Get x component of centroid.
Type centroid_y () const
 Get y component of centroid.
Type centroid_z () const
 Get z component of centroid.
vgl_point_3d< Type > min_point () const
 Return lower left corner of box.
vgl_point_3d< Type > max_point () const
 Return upper right corner of box.
bool is_empty () const
 Return true if this box is empty.
void add (vgl_point_3d< Type > const &p)
 Add a point to this box.
void add (vgl_box_3d< Type > const &b)
 Make the convex union of two boxes.
bool contains (vgl_point_3d< Type > const &p) const
 Return true iff the point p is inside this box.
bool contains (vgl_box_3d< Type > const &b) const
 Return true iff the corner points of b are inside this box.
bool contains (Type const &x, Type const &y, Type const &z) const
 Return true if (x,y,z) is inside this box, ie x_min <= x <= x_max etc.
void empty ()
 Make the box empty.
void set_min_x (Type m)
 Set min x ordinate of box (other sides unchanged).
void set_min_y (Type m)
 Set min y ordinate of box (other sides unchanged).
void set_min_z (Type m)
 Set min z ordinate of box (other sides unchanged).
void set_max_x (Type m)
 Set max x ordinate of box (other sides unchanged).
void set_max_y (Type m)
 Set max y ordinate of box (other sides unchanged).
void set_max_z (Type m)
 Set max z ordinate of box (other sides unchanged).
void set_centroid_x (Type cx)
 Move box so centroid lies at cx (size unchanged).
void set_centroid_y (Type cy)
 Move box so centroid lies at cy (size unchanged).
void set_centroid_z (Type cz)
 Move box so centroid lies at cz (size unchanged).
void set_width (Type width)
 Set width (x), centroid unchanged.
void set_height (Type height)
 Set height (y), centroid unchanged.
void set_depth (Type depth)
 Set depth (z), centroid unchanged.
void expand_about_centroid (Type expand)
 Add to width and height, centroid unchanged.
void scale_about_centroid (double s)
 Scale width, height and depth, centroid unchanged.
void scale_about_origin (double s)
 Scale width, height and depth, keeping scaled position of origin unchanged.
void set_min_position (Type const m[3])
 Modify min corner point. Max corner point only changed if necessary to avoid empty box.
void set_max_position (Type const m[3])
 Modify max corner point. Min corner point only changed if necessary to avoid empty box.
void set_min_point (vgl_point_3d< Type > const &min_pt)
 Modify min corner point. Max corner point only changed if necessary to avoid empty box.
void set_max_point (vgl_point_3d< Type > const &max_pt)
 Modify max corner point. Min corner point only changed if necessary to avoid empty box.
void set_centroid (Type const c[3])
 Move box so centroid lies at c (size unchanged).
void set_centroid (vgl_point_3d< Type > const &c)
 Move box so centroid lies at c (size unchanged).
vcl_ostream & print (vcl_ostream &) const
 Write "<vgl_box_3d x0,y0,z0 to x1,y1,z1>" to stream.
vcl_ostream & write (vcl_ostream &) const
 Write "x0 y0 z0 x1 y1 z1(endl)" to stream.
vcl_istream & read (vcl_istream &)
 Read x0,y0,z0,x1,y1,z1 from stream.

Protected Attributes

Type min_pos_ [3]
Type max_pos_ [3]

Related Functions

(Note that these are not member functions.)

vcl_ostream & operator<< (vcl_ostream &s, vgl_orient_box_3d< Type > const &p)
 Write box to stream.
vcl_istream & operator>> (vcl_istream &is, vgl_orient_box_3d< Type > &p)
 Read box from stream.
vgl_box_3d< T > vgl_intersection (vgl_box_3d< T > const &a, vgl_box_3d< T > const &b)
 Return box defining intersection between boxes a and b.
vcl_ostream & operator<< (vcl_ostream &s, vgl_box_3d< Type > const &p)
 Write box to stream.
vcl_istream & operator>> (vcl_istream &is, vgl_box_3d< Type > &p)
 Read box from stream.


Member Enumeration Documentation

template<class Type>
enum vgl_box_3d::point_type
 

Enumerator:
centre 
min_pos 
max_pos 

Definition at line 85 of file vgl_box_3d.h.


Constructor & Destructor Documentation

template<class Type>
vgl_box_3d< Type >::vgl_box_3d  ) 
 

Default constructor (creates empty box).

Definition at line 17 of file vgl_box_3d.txx.

template<class Type>
vgl_box_3d< Type >::vgl_box_3d Type const   min_position[3],
Type const   max_position[3]
 

Construct using two corner points.

Definition at line 24 of file vgl_box_3d.txx.

template<class Type>
vgl_box_3d< Type >::vgl_box_3d vgl_point_3d< Type > const &  min_pos,
vgl_point_3d< Type > const &  max_pos
 

Construct using two corner points.

Definition at line 34 of file vgl_box_3d.txx.

template<class Type>
vgl_box_3d< Type >::vgl_box_3d Type  xmin,
Type  ymin,
Type  zmin,
Type  xmax,
Type  ymax,
Type  zmax
 

Construct from ranges in x,y,z (take care with order of inputs).

The x range is given by the 1st and 4th coordinates, the y range is given by the 2nd and 5th coordinates, the z range is given by the 3rd and 6th coordinates.

Definition at line 44 of file vgl_box_3d.txx.

template<class Type>
vgl_box_3d< Type >::vgl_box_3d Type const   ref_point[3],
Type  width,
Type  height,
Type  depth,
point_type 
 

Construct a box sized width x height x depth at a given reference point.

The box will either be centered at ref_point or will have ref_point as its min-position or max-position, as specified by the 5th argument.

template<class Type>
vgl_box_3d< Type >::vgl_box_3d vgl_point_3d< Type > const &  ref_point,
Type  width,
Type  height,
Type  depth,
point_type 
 

Construct a box sized width x height x depth at a given reference point.

The box will either be centered at ref_point or will have ref_point as its min-position or max-position, as specified by the 5th argument.


Member Function Documentation

template<class Type>
void vgl_box_3d< Type >::add vgl_box_3d< Type > const &  b  ) 
 

Make the convex union of two boxes.

Do this by possibly enlarging this box so that the corner points of the given box just fall within the box. Adding an empty box does not change the current box.

Definition at line 377 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::add vgl_point_3d< Type > const &  p  ) 
 

Add a point to this box.

Do this by possibly enlarging the box so that the point just falls within the box. Adding a point to an empty box makes it a size zero box only containing p.

Definition at line 353 of file vgl_box_3d.txx.

template<class Type>
vgl_point_3d< Type > vgl_box_3d< Type >::centroid  )  const
 

Get the centroid point.

Definition at line 144 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::centroid_x  )  const
 

Get x component of centroid.

Definition at line 150 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::centroid_y  )  const
 

Get y component of centroid.

Definition at line 157 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::centroid_z  )  const
 

Get z component of centroid.

Definition at line 164 of file vgl_box_3d.txx.

template<class Type>
bool vgl_box_3d< Type >::contains Type const &  x,
Type const &  y,
Type const &  z
const [inline]
 

Return true if (x,y,z) is inside this box, ie x_min <= x <= x_max etc.

Definition at line 175 of file vgl_box_3d.h.

template<class Type>
bool vgl_box_3d< Type >::contains vgl_box_3d< Type > const &  b  )  const
 

Return true iff the corner points of b are inside this box.

Definition at line 393 of file vgl_box_3d.txx.

template<class Type>
bool vgl_box_3d< Type >::contains vgl_point_3d< Type > const &  p  )  const
 

Return true iff the point p is inside this box.

Definition at line 386 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::depth  )  const
 

Get depth of this box (= z dimension).

Definition at line 138 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::empty  ) 
 

Make the box empty.

Definition at line 402 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::expand_about_centroid Type  expand  ) 
 

Add to width and height, centroid unchanged.

Will move each side by expand / 2.

Definition at line 242 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::height  )  const
 

Get height of this box (= y dimension).

Definition at line 132 of file vgl_box_3d.txx.

template<class Type>
bool vgl_box_3d< Type >::is_empty  )  const [inline]
 

Return true if this box is empty.

Definition at line 153 of file vgl_box_3d.h.

template<class Type>
vgl_point_3d< Type > vgl_box_3d< Type >::max_point  )  const
 

Return upper right corner of box.

Definition at line 329 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::max_x  )  const [inline]
 

Get max x.

Definition at line 129 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::max_y  )  const [inline]
 

Get max y.

Definition at line 131 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::max_z  )  const [inline]
 

Get max z.

Definition at line 133 of file vgl_box_3d.h.

template<class Type>
vgl_point_3d< Type > vgl_box_3d< Type >::min_point  )  const
 

Return lower left corner of box.

Definition at line 322 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::min_x  )  const [inline]
 

Get min x.

Definition at line 122 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::min_y  )  const [inline]
 

Get min y.

Definition at line 124 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::min_z  )  const [inline]
 

Get min z.

Definition at line 126 of file vgl_box_3d.h.

template<class Type>
bool vgl_box_3d< Type >::operator== vgl_box_3d< Type > const &  b  )  const [inline]
 

Equality test.

Definition at line 102 of file vgl_box_3d.h.

template<class Type>
vcl_ostream & vgl_box_3d< Type >::print vcl_ostream &   )  const
 

Write "<vgl_box_3d x0,y0,z0 to x1,y1,z1>" to stream.

Definition at line 311 of file vgl_box_3d.txx.

template<class Type>
vcl_istream & vgl_box_3d< Type >::read vcl_istream &   ) 
 

Read x0,y0,z0,x1,y1,z1 from stream.

Definition at line 343 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::scale_about_centroid double  s  ) 
 

Scale width, height and depth, centroid unchanged.

Definition at line 252 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::scale_about_origin double  s  ) 
 

Scale width, height and depth, keeping scaled position of origin unchanged.

Definition at line 262 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_centroid vgl_point_3d< Type > const &  c  )  [inline]
 

Move box so centroid lies at c (size unchanged).

Definition at line 232 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_centroid Type const   c[3]  )  [inline]
 

Move box so centroid lies at c (size unchanged).

Definition at line 230 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_centroid_x Type  cx  ) 
 

Move box so centroid lies at cx (size unchanged).

Definition at line 171 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_centroid_y Type  cy  ) 
 

Move box so centroid lies at cy (size unchanged).

Definition at line 180 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_centroid_z Type  cz  ) 
 

Move box so centroid lies at cz (size unchanged).

Definition at line 189 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_depth Type  depth  ) 
 

Set depth (z), centroid unchanged.

Definition at line 233 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_height Type  height  ) 
 

Set height (y), centroid unchanged.

Definition at line 226 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_max_point vgl_point_3d< Type > const &  max_pt  ) 
 

Modify max corner point. Min corner point only changed if necessary to avoid empty box.

Definition at line 303 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_max_position Type const   m[3]  ) 
 

Modify max corner point. Min corner point only changed if necessary to avoid empty box.

Definition at line 284 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_max_x Type  m  )  [inline]
 

Set max x ordinate of box (other sides unchanged).

Definition at line 192 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_max_y Type  m  )  [inline]
 

Set max y ordinate of box (other sides unchanged).

Definition at line 194 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_max_z Type  m  )  [inline]
 

Set max z ordinate of box (other sides unchanged).

Definition at line 196 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_min_point vgl_point_3d< Type > const &  min_pt  ) 
 

Modify min corner point. Max corner point only changed if necessary to avoid empty box.

Definition at line 295 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_min_position Type const   m[3]  ) 
 

Modify min corner point. Max corner point only changed if necessary to avoid empty box.

Definition at line 273 of file vgl_box_3d.txx.

template<class Type>
void vgl_box_3d< Type >::set_min_x Type  m  )  [inline]
 

Set min x ordinate of box (other sides unchanged).

Definition at line 185 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_min_y Type  m  )  [inline]
 

Set min y ordinate of box (other sides unchanged).

Definition at line 187 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_min_z Type  m  )  [inline]
 

Set min z ordinate of box (other sides unchanged).

Definition at line 189 of file vgl_box_3d.h.

template<class Type>
void vgl_box_3d< Type >::set_width Type  width  ) 
 

Set width (x), centroid unchanged.

Definition at line 219 of file vgl_box_3d.txx.

template<class Type>
Type vgl_box_3d< Type >::volume  )  const [inline]
 

Get volume of this box.

Definition at line 119 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::width  )  const
 

Get width of this box (= x dimension).

Definition at line 126 of file vgl_box_3d.txx.

template<class Type>
vcl_ostream & vgl_box_3d< Type >::write vcl_ostream &   )  const
 

Write "x0 y0 z0 x1 y1 z1(endl)" to stream.

Definition at line 336 of file vgl_box_3d.txx.


Friends And Related Function Documentation

template<class Type>
vcl_ostream & operator<< vcl_ostream &  s,
vgl_box_3d< Type > const &  p
[related]
 

Write box to stream.

Definition at line 426 of file vgl_box_3d.txx.

template<class Type>
vcl_ostream & operator<< vcl_ostream &  s,
vgl_orient_box_3d< Type > const &  p
[related]
 

Write box to stream.

Definition at line 103 of file vgl_orient_box_3d.txx.

template<class Type>
vcl_istream & operator>> vcl_istream &  is,
vgl_box_3d< Type > &  p
[related]
 

Read box from stream.

Definition at line 433 of file vgl_box_3d.txx.

template<class Type>
vcl_istream & operator>> vcl_istream &  is,
vgl_orient_box_3d< Type > &  p
[related]
 

Read box from stream.

Definition at line 110 of file vgl_orient_box_3d.txx.

template<class Type>
vgl_box_3d< T > vgl_intersection vgl_box_3d< T > const &  a,
vgl_box_3d< T > const &  b
[related]
 

Return box defining intersection between boxes a and b.

Empty box returned if no intersection.

Definition at line 409 of file vgl_box_3d.txx.


Member Data Documentation

template<class Type>
Type vgl_box_3d< Type >::max_pos_[3] [protected]
 

Definition at line 249 of file vgl_box_3d.h.

template<class Type>
Type vgl_box_3d< Type >::min_pos_[3] [protected]
 

Definition at line 248 of file vgl_box_3d.h.


The documentation for this class was generated from the following files:
Generated on Thu Jan 10 14:39:25 2008 for core/vgl by  doxygen 1.4.4