Represents a geometric rectangle. More...
#include <rectangle.h>


Public Member Functions | |
| rectangle (const point< numeric_type > &vertex_1, const point< numeric_type > &vertex_2) | |
| rectangle (numeric_type x_1=0, numeric_type y_1=0, numeric_type x_2=0, numeric_type y_2=0) | |
| numeric_type | height () const |
| numeric_type | width () const |
| rectangle | order () const |
| Re-orders the vertices of the line to be increasing. | |
| point< numeric_type > | top_left () const |
| point< numeric_type > | bottom_left () const |
| point< numeric_type > | top_right () const |
| point< numeric_type > | bottom_right () const |
| returns the appropriate point as represented by our rectangle. | |
| numeric_type | minimum_x () const |
| Return the smallest x from the points in the rectangle. | |
| numeric_type | minimum_y () const |
| Return the smallest y from the points in the rectangle. | |
| numeric_type | maximum_x () const |
| Return the largest x from the points in the rectangle. | |
| numeric_type | maximum_y () const |
| Return the largest y from the points in the rectangle. | |
| point< numeric_type > | center () const |
| Returns the point at the center of the rectangle. | |
| bool | inside (const point< numeric_type > &to_check) const |
| Returns true if `to_check' is inside `this' rectangle. | |
| bool | operator== (const rectangle &to_compare) const |
| Returns true if `to_compare' has vertices equal to `this'. | |
| rectangle | operator+ (const point< numeric_type > &to_add) const |
| Returns the rectangle resulting from adding a point to its vertices. | |
| rectangle | operator- (const point< numeric_type > &to_subtract) const |
| Returns the rectangle resulting from subtracting "to_subtract". | |
| rectangle & | operator+= (const point< numeric_type > &to_add) |
| Adds the point "to_add" to our vertices. | |
| rectangle & | operator-= (const point< numeric_type > &to_subtract) |
| Subtracts the point "to_add" to our vertices. | |
| void | encompass (const rectangle &to_adjust_to) |
| Finds the largest dimension needed to contain all rectangles passed in. | |
| bool | intersect (const rectangle &r2) const |
| Returns true if `this' & `r2' cover any common points. | |
| bool | disjoint (const rectangle &r2) const |
| Returns true if `this' & `r2' have mutually exclusive extents. | |
| bool | join_intersecting (const rectangle &r2, rectangle &result) |
| Sets "result" to encompass this and "r2" if they intersect. | |
| bool | intersection (const rectangle &r2, rectangle &result) |
| Sets "result" to the intersection of this and "r2". | |
| basis::astring | text_form () const |
| Prints out the contents of the rectangle. | |
| bool | from_text (const basis::astring &text) |
| Returns true if the "text" is parsed into this rectangle. | |
| point< numeric_type > | vertex_1 () const |
| point< numeric_type > | vertex_2 () const |
| void | vertex_1 (const point< numeric_type > &to_set) |
| void | vertex_2 (const point< numeric_type > &to_set) |
| virtual int | packed_size () const |
| Estimates the space needed for the packed structure. | |
| virtual void | pack (basis::byte_array &packed_form) const |
| Creates a packed form of the packable object in "packed_form". | |
| virtual bool | unpack (basis::byte_array &packed_form) |
| Restores the packable from the "packed_form". | |
Protected Attributes | |
| point< numeric_type > | _vertex_1 |
| point< numeric_type > | _vertex_2 |
Represents a geometric rectangle.
Definition at line 27 of file rectangle.h.
| geometric::rectangle< numeric_type >::rectangle | ( | const point< numeric_type > & | vertex_1, | |
| const point< numeric_type > & | vertex_2 | |||
| ) | [inline] |
Definition at line 139 of file rectangle.h.
| geometric::rectangle< numeric_type >::rectangle | ( | numeric_type | x_1 = 0, |
|
| numeric_type | y_1 = 0, |
|||
| numeric_type | x_2 = 0, |
|||
| numeric_type | y_2 = 0 | |||
| ) | [inline] |
Definition at line 143 of file rectangle.h.
| point< numeric_type > geometric::rectangle< numeric_type >::bottom_left | ( | ) | const [inline] |
Reimplemented in geometric::screen_rectangle.
Definition at line 207 of file rectangle.h.
References geometric::rectangle< numeric_type >::order(), and geometric::rectangle< numeric_type >::vertex_1().
| point< numeric_type > geometric::rectangle< numeric_type >::bottom_right | ( | ) | const [inline] |
returns the appropriate point as represented by our rectangle.
note that these are with respect to a normal cartesian coordinate system. if you want points for a screen based coordinate system (with the origin in the top left), then bottom_left and top_right return the appropriate bounding points for that rectangle.
Reimplemented in geometric::screen_rectangle.
Definition at line 221 of file rectangle.h.
References geometric::rectangle< numeric_type >::order(), geometric::rectangle< numeric_type >::vertex_1(), and geometric::rectangle< numeric_type >::vertex_2().
| point< numeric_type > geometric::rectangle< numeric_type >::center | ( | ) | const [inline] |
Returns the point at the center of the rectangle.
Definition at line 228 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
| bool geometric::rectangle< numeric_type >::disjoint | ( | const rectangle< numeric_type > & | r2 | ) | const [inline] |
Returns true if `this' & `r2' have mutually exclusive extents.
Definition at line 318 of file rectangle.h.
References geometric::rectangle< numeric_type >::maximum_x(), geometric::rectangle< numeric_type >::maximum_y(), geometric::rectangle< numeric_type >::minimum_x(), and geometric::rectangle< numeric_type >::minimum_y().
Referenced by geometric::rectangle< numeric_type >::intersect(), geometric::rectangle< numeric_type >::intersection(), and geometric::rectangle< numeric_type >::join_intersecting().
| void geometric::rectangle< numeric_type >::encompass | ( | const rectangle< numeric_type > & | to_adjust_to | ) | [inline] |
Finds the largest dimension needed to contain all rectangles passed in.
The original dimension of `this' rectangle is compared with all subsequent rectangles passed to adjust_dimension, and it is modified (joined with `to_adjust_to') if the extent of `to_adjust_to' is greater or lesser than the current extent of `this' rectangle.
Definition at line 305 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
Referenced by geometric::rectangle< numeric_type >::join_intersecting().
| bool geometric::rectangle< numeric_type >::from_text | ( | const basis::astring & | text | ) | [inline] |
Returns true if the "text" is parsed into this rectangle.
Definition at line 359 of file rectangle.h.
References basis::astring::convert(), geometric::crop_non_numeric(), geometric::crop_numeric(), geometric::numeric_specifier(), geometric::rectangle< numeric_type >::vertex_1(), and geometric::rectangle< numeric_type >::vertex_2().
| numeric_type geometric::rectangle< numeric_type >::height | ( | ) | const [inline] |
Definition at line 164 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::absolute_value().
| bool geometric::rectangle< numeric_type >::inside | ( | const point< numeric_type > & | to_check | ) | const [inline] |
Returns true if `to_check' is inside `this' rectangle.
Definition at line 236 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, geometric::rectangle< numeric_type >::order(), geometric::point< numeric_type >::x(), and geometric::point< numeric_type >::y().
| bool geometric::rectangle< numeric_type >::intersect | ( | const rectangle< numeric_type > & | r2 | ) | const [inline] |
Returns true if `this' & `r2' cover any common points.
Definition at line 328 of file rectangle.h.
References geometric::rectangle< numeric_type >::disjoint().
| bool geometric::rectangle< numeric_type >::intersection | ( | const rectangle< numeric_type > & | r2, | |
| rectangle< numeric_type > & | result | |||
| ) | [inline] |
Sets "result" to the intersection of this and "r2".
If `this' and `r2' intersect, then `result' is set to their intersecting extent and true is returned. If not, then false is returned and `result' is undefined.
Definition at line 341 of file rectangle.h.
References geometric::rectangle< numeric_type >::disjoint(), basis::maximum(), geometric::rectangle< numeric_type >::maximum_x(), geometric::rectangle< numeric_type >::maximum_y(), basis::minimum(), geometric::rectangle< numeric_type >::minimum_x(), and geometric::rectangle< numeric_type >::minimum_y().
| bool geometric::rectangle< numeric_type >::join_intersecting | ( | const rectangle< numeric_type > & | r2, | |
| rectangle< numeric_type > & | result | |||
| ) | [inline] |
Sets "result" to encompass this and "r2" if they intersect.
If `this' and `r2' intersect, `result' is adjusted to their dimension and true is returned. If not, false is returned and `result' is undefined.
Definition at line 332 of file rectangle.h.
References geometric::rectangle< numeric_type >::disjoint(), and geometric::rectangle< numeric_type >::encompass().
| numeric_type geometric::rectangle< numeric_type >::maximum_x | ( | ) | const [inline] |
Return the largest x from the points in the rectangle.
Definition at line 180 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::maximum().
Referenced by geometric::rectangle< numeric_type >::disjoint(), geometric::rectangle< numeric_type >::intersection(), and geometric::rectangle< numeric_type >::operator==().
| numeric_type geometric::rectangle< numeric_type >::maximum_y | ( | ) | const [inline] |
Return the largest y from the points in the rectangle.
Definition at line 184 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::maximum().
Referenced by geometric::rectangle< numeric_type >::disjoint(), geometric::rectangle< numeric_type >::intersection(), and geometric::rectangle< numeric_type >::operator==().
| numeric_type geometric::rectangle< numeric_type >::minimum_x | ( | ) | const [inline] |
Return the smallest x from the points in the rectangle.
Definition at line 172 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::minimum().
Referenced by geometric::rectangle< numeric_type >::disjoint(), geometric::rectangle< numeric_type >::intersection(), and geometric::rectangle< numeric_type >::operator==().
| numeric_type geometric::rectangle< numeric_type >::minimum_y | ( | ) | const [inline] |
Return the smallest y from the points in the rectangle.
Definition at line 176 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::minimum().
Referenced by geometric::rectangle< numeric_type >::disjoint(), geometric::rectangle< numeric_type >::intersection(), and geometric::rectangle< numeric_type >::operator==().
| rectangle< numeric_type > geometric::rectangle< numeric_type >::operator+ | ( | const point< numeric_type > & | to_add | ) | const [inline] |
Returns the rectangle resulting from adding a point to its vertices.
Definition at line 265 of file rectangle.h.
| rectangle< numeric_type > & geometric::rectangle< numeric_type >::operator+= | ( | const point< numeric_type > & | to_add | ) | [inline] |
Adds the point "to_add" to our vertices.
Definition at line 257 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
| rectangle< numeric_type > geometric::rectangle< numeric_type >::operator- | ( | const point< numeric_type > & | to_subtract | ) | const [inline] |
Returns the rectangle resulting from subtracting "to_subtract".
Definition at line 297 of file rectangle.h.
| rectangle< numeric_type > & geometric::rectangle< numeric_type >::operator-= | ( | const point< numeric_type > & | to_subtract | ) | [inline] |
Subtracts the point "to_add" to our vertices.
Definition at line 261 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
| bool geometric::rectangle< numeric_type >::operator== | ( | const rectangle< numeric_type > & | to_compare | ) | const [inline] |
Returns true if `to_compare' has vertices equal to `this'.
Definition at line 246 of file rectangle.h.
References geometric::rectangle< numeric_type >::maximum_x(), geometric::rectangle< numeric_type >::maximum_y(), geometric::rectangle< numeric_type >::minimum_x(), and geometric::rectangle< numeric_type >::minimum_y().
| rectangle< numeric_type > geometric::rectangle< numeric_type >::order | ( | ) | const [inline] |
Re-orders the vertices of the line to be increasing.
Orients the vertices such that the x and y coordinates of the first vertex are respectively closer to the origin than the x and y coordinates of the second vertex (or they are equidistant).
Reimplemented in geometric::screen_rectangle.
Definition at line 188 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::flip_increasing().
Referenced by geometric::rectangle< numeric_type >::bottom_left(), geometric::rectangle< numeric_type >::bottom_right(), geometric::rectangle< numeric_type >::inside(), geometric::rectangle< numeric_type >::top_left(), and geometric::rectangle< numeric_type >::top_right().
| void geometric::rectangle< contents >::pack | ( | basis::byte_array & | packed_form | ) | const [inline, virtual] |
Creates a packed form of the packable object in "packed_form".
This must append to the data in "packed_form" rather than clearing prior contents.
Implements basis::packable.
Definition at line 282 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
Referenced by geometric::rectangle< numeric_type >::packed_size().
| int geometric::rectangle< contents >::packed_size | ( | ) | const [inline, virtual] |
Estimates the space needed for the packed structure.
Implements basis::packable.
Definition at line 273 of file rectangle.h.
References basis::array< contents >::length(), and geometric::rectangle< numeric_type >::pack().
| basis::astring geometric::rectangle< numeric_type >::text_form | ( | ) | const [inline] |
Prints out the contents of the rectangle.
Definition at line 352 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
| point< numeric_type > geometric::rectangle< numeric_type >::top_left | ( | ) | const [inline] |
Reimplemented in geometric::screen_rectangle.
Definition at line 200 of file rectangle.h.
References geometric::rectangle< numeric_type >::order(), geometric::rectangle< numeric_type >::vertex_1(), and geometric::rectangle< numeric_type >::vertex_2().
| point< numeric_type > geometric::rectangle< numeric_type >::top_right | ( | ) | const [inline] |
Reimplemented in geometric::screen_rectangle.
Definition at line 214 of file rectangle.h.
References geometric::rectangle< numeric_type >::order(), and geometric::rectangle< numeric_type >::vertex_2().
| bool geometric::rectangle< contents >::unpack | ( | basis::byte_array & | packed_form | ) | [inline, virtual] |
Restores the packable from the "packed_form".
This object becomes the unpacked form, and therefore must lose any of its prior contents that depend on the data in "packed_form". This is up to the derived unpack function to figure out. The "packed_form" is modified by extracting all of the pieces that are used for this object; the remainder stays in "packed_form". true is returned if the unpacking was successful.
Implements basis::packable.
Definition at line 289 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, and geometric::rectangle< numeric_type >::_vertex_2.
| void geometric::rectangle< numeric_type >::vertex_1 | ( | const point< numeric_type > & | to_set | ) | [inline] |
Definition at line 156 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1.
| point< numeric_type > geometric::rectangle< numeric_type >::vertex_1 | ( | ) | const [inline] |
Definition at line 148 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1.
Referenced by geometric::rectangle< numeric_type >::bottom_left(), geometric::rectangle< numeric_type >::bottom_right(), geometric::rectangle< numeric_type >::from_text(), and geometric::rectangle< numeric_type >::top_left().
| void geometric::rectangle< numeric_type >::vertex_2 | ( | const point< numeric_type > & | to_set | ) | [inline] |
Definition at line 160 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_2.
| point< numeric_type > geometric::rectangle< numeric_type >::vertex_2 | ( | ) | const [inline] |
Definition at line 152 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_2.
Referenced by geometric::rectangle< numeric_type >::bottom_right(), geometric::rectangle< numeric_type >::from_text(), geometric::rectangle< numeric_type >::top_left(), and geometric::rectangle< numeric_type >::top_right().
| numeric_type geometric::rectangle< numeric_type >::width | ( | ) | const [inline] |
Definition at line 168 of file rectangle.h.
References geometric::rectangle< numeric_type >::_vertex_1, geometric::rectangle< numeric_type >::_vertex_2, and basis::absolute_value().
point<numeric_type> geometric::rectangle< numeric_type >::_vertex_1 [protected] |
Definition at line 124 of file rectangle.h.
Referenced by geometric::rectangle< numeric_type >::center(), geometric::rectangle< numeric_type >::encompass(), geometric::rectangle< numeric_type >::height(), geometric::rectangle< numeric_type >::inside(), geometric::rectangle< numeric_type >::maximum_x(), geometric::rectangle< numeric_type >::maximum_y(), geometric::rectangle< numeric_type >::minimum_x(), geometric::rectangle< numeric_type >::minimum_y(), geometric::rectangle< numeric_type >::operator+=(), geometric::rectangle< numeric_type >::operator-=(), geometric::rectangle< numeric_type >::order(), geometric::rectangle< numeric_type >::pack(), geometric::rectangle< numeric_type >::text_form(), geometric::rectangle< numeric_type >::unpack(), geometric::rectangle< numeric_type >::vertex_1(), and geometric::rectangle< numeric_type >::width().
point<numeric_type> geometric::rectangle< numeric_type >::_vertex_2 [protected] |
Definition at line 125 of file rectangle.h.
Referenced by geometric::rectangle< numeric_type >::center(), geometric::rectangle< numeric_type >::encompass(), geometric::rectangle< numeric_type >::height(), geometric::rectangle< numeric_type >::inside(), geometric::rectangle< numeric_type >::maximum_x(), geometric::rectangle< numeric_type >::maximum_y(), geometric::rectangle< numeric_type >::minimum_x(), geometric::rectangle< numeric_type >::minimum_y(), geometric::rectangle< numeric_type >::operator+=(), geometric::rectangle< numeric_type >::operator-=(), geometric::rectangle< numeric_type >::order(), geometric::rectangle< numeric_type >::pack(), geometric::rectangle< numeric_type >::text_form(), geometric::rectangle< numeric_type >::unpack(), geometric::rectangle< numeric_type >::vertex_2(), and geometric::rectangle< numeric_type >::width().
1.6.3