#include <vgl_box_3d.h>
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
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. | |
|
|||||
|
Definition at line 85 of file vgl_box_3d.h. |
|
|||||||||
|
Default constructor (creates empty box).
Definition at line 17 of file vgl_box_3d.txx. |
|
||||||||||||||||
|
Construct using two corner points.
Definition at line 24 of file vgl_box_3d.txx. |
|
||||||||||||||||
|
Construct using two corner points.
Definition at line 34 of file vgl_box_3d.txx. |
|
||||||||||||||||||||||||||||||||
|
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. |
|
||||||||||||||||||||||||||||
|
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. |
|
||||||||||||||||||||||||||||
|
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. |
|
||||||||||
|
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. |
|
||||||||||
|
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. |
|
|||||||||
|
Get the centroid point.
Definition at line 144 of file vgl_box_3d.txx. |
|
|||||||||
|
Get x component of centroid.
Definition at line 150 of file vgl_box_3d.txx. |
|
|||||||||
|
Get y component of centroid.
Definition at line 157 of file vgl_box_3d.txx. |
|
|||||||||
|
Get z component of centroid.
Definition at line 164 of file vgl_box_3d.txx. |
|
||||||||||||||||||||
|
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. |
|
||||||||||
|
Return true iff the corner points of b are inside this box.
Definition at line 393 of file vgl_box_3d.txx. |
|
||||||||||
|
Return true iff the point p is inside this box.
Definition at line 386 of file vgl_box_3d.txx. |
|
|||||||||
|
Get depth of this box (= z dimension).
Definition at line 138 of file vgl_box_3d.txx. |
|
|||||||||
|
Make the box empty.
Definition at line 402 of file vgl_box_3d.txx. |
|
||||||||||
|
Add to width and height, centroid unchanged.
Will move each side by Definition at line 242 of file vgl_box_3d.txx. |
|
|||||||||
|
Get height of this box (= y dimension).
Definition at line 132 of file vgl_box_3d.txx. |
|
|||||||||
|
Return true if this box is empty.
Definition at line 153 of file vgl_box_3d.h. |
|
|||||||||
|
Return upper right corner of box.
Definition at line 329 of file vgl_box_3d.txx. |
|
|||||||||
|
Get max x.
Definition at line 129 of file vgl_box_3d.h. |
|
|||||||||
|
Get max y.
Definition at line 131 of file vgl_box_3d.h. |
|
|||||||||
|
Get max z.
Definition at line 133 of file vgl_box_3d.h. |
|
|||||||||
|
Return lower left corner of box.
Definition at line 322 of file vgl_box_3d.txx. |
|
|||||||||
|
Get min x.
Definition at line 122 of file vgl_box_3d.h. |
|
|||||||||
|
Get min y.
Definition at line 124 of file vgl_box_3d.h. |
|
|||||||||
|
Get min z.
Definition at line 126 of file vgl_box_3d.h. |
|
||||||||||
|
Equality test.
Definition at line 102 of file vgl_box_3d.h. |
|
||||||||||
|
Write "<vgl_box_3d x0,y0,z0 to x1,y1,z1>" to stream.
Definition at line 311 of file vgl_box_3d.txx. |
|
||||||||||
|
Read x0,y0,z0,x1,y1,z1 from stream.
Definition at line 343 of file vgl_box_3d.txx. |
|
||||||||||
|
Scale width, height and depth, centroid unchanged.
Definition at line 252 of file vgl_box_3d.txx. |
|
||||||||||
|
Scale width, height and depth, keeping scaled position of origin unchanged.
Definition at line 262 of file vgl_box_3d.txx. |
|
||||||||||
|
Move box so centroid lies at c (size unchanged).
Definition at line 232 of file vgl_box_3d.h. |
|
||||||||||
|
Move box so centroid lies at c (size unchanged).
Definition at line 230 of file vgl_box_3d.h. |
|
||||||||||
|
Move box so centroid lies at cx (size unchanged).
Definition at line 171 of file vgl_box_3d.txx. |
|
||||||||||
|
Move box so centroid lies at cy (size unchanged).
Definition at line 180 of file vgl_box_3d.txx. |
|
||||||||||
|
Move box so centroid lies at cz (size unchanged).
Definition at line 189 of file vgl_box_3d.txx. |
|
||||||||||
|
Set depth (z), centroid unchanged.
Definition at line 233 of file vgl_box_3d.txx. |
|
||||||||||
|
Set height (y), centroid unchanged.
Definition at line 226 of file vgl_box_3d.txx. |
|
||||||||||
|
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. |
|
||||||||||
|
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. |
|
||||||||||
|
Set max x ordinate of box (other sides unchanged).
Definition at line 192 of file vgl_box_3d.h. |
|
||||||||||
|
Set max y ordinate of box (other sides unchanged).
Definition at line 194 of file vgl_box_3d.h. |
|
||||||||||
|
Set max z ordinate of box (other sides unchanged).
Definition at line 196 of file vgl_box_3d.h. |
|
||||||||||
|
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. |
|
||||||||||
|
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. |
|
||||||||||
|
Set min x ordinate of box (other sides unchanged).
Definition at line 185 of file vgl_box_3d.h. |
|
||||||||||
|
Set min y ordinate of box (other sides unchanged).
Definition at line 187 of file vgl_box_3d.h. |
|
||||||||||
|
Set min z ordinate of box (other sides unchanged).
Definition at line 189 of file vgl_box_3d.h. |
|
||||||||||
|
Set width (x), centroid unchanged.
Definition at line 219 of file vgl_box_3d.txx. |
|
|||||||||
|
Get volume of this box.
Definition at line 119 of file vgl_box_3d.h. |
|
|||||||||
|
Get width of this box (= x dimension).
Definition at line 126 of file vgl_box_3d.txx. |
|
||||||||||
|
Write "x0 y0 z0 x1 y1 z1(endl)" to stream.
Definition at line 336 of file vgl_box_3d.txx. |
|
||||||||||||||||
|
Write box to stream.
Definition at line 426 of file vgl_box_3d.txx. |
|
||||||||||||||||
|
Write box to stream.
Definition at line 103 of file vgl_orient_box_3d.txx. |
|
||||||||||||||||
|
Read box from stream.
Definition at line 433 of file vgl_box_3d.txx. |
|
||||||||||||||||
|
Read box from stream.
Definition at line 110 of file vgl_orient_box_3d.txx. |
|
||||||||||||||||
|
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. |
|
|||||
|
Definition at line 249 of file vgl_box_3d.h. |
|
|||||
|
Definition at line 248 of file vgl_box_3d.h. |
1.4.4