lsst.geom
17.0.1-1-gb9095d2+3
|
A floating-point coordinate rectangle geometry. More...
#include <Box.h>
Public Types | |
typedef Point2D | Point |
typedef Extent2D | Extent |
typedef double | Element |
Public Member Functions | |
Box2D () noexcept | |
Construct an empty box. More... | |
Box2D (Point2D const &minimum, Point2D const &maximum, bool invert=true) noexcept | |
Construct a box from its minimum and maximum points. More... | |
Box2D (Point2D const &corner, Extent2D const &dimensions, bool invert=true) noexcept | |
Construct a box from one corner and dimensions. More... | |
Box2D (Box2I const &other) noexcept | |
Construct a floating-point box from an integer box. More... | |
Box2D (Box2D const &) noexcept=default | |
Standard copy constructor. More... | |
Box2D (Box2D &&) noexcept=default | |
~Box2D () noexcept=default | |
void | swap (Box2D &other) noexcept |
Box2D & | operator= (Box2D const &) noexcept=default |
Standard assignment operator. More... | |
Box2D & | operator= (Box2D &&) noexcept=default |
bool | isEmpty () const noexcept |
Return true if the box contains no points. More... | |
bool | contains (Point2D const &point) const noexcept |
Return true if the box contains the point. More... | |
bool | contains (Box2D const &other) const noexcept |
Return true if all points contained by other are also contained by this. More... | |
bool | overlaps (Box2D const &other) const noexcept |
Return true if any points in other are also in this. More... | |
void | grow (double buffer) |
Increase the size of the box by the given buffer amount in all directions. More... | |
void | grow (Extent2D const &buffer) |
Increase the size of the box by the given buffer amount in each direction. More... | |
void | shift (Extent2D const &offset) |
Shift the position of the box by the given offset. More... | |
void | flipLR (float xExtent) |
Flip a bounding box about the y-axis given a parent box of extent (xExtent). More... | |
void | flipTB (float yExtent) |
Flip a bounding box about the x-axis given a parent box of extent (yExtent). More... | |
void | include (Point2D const &point) noexcept |
Expand this to ensure that this->contains(point). More... | |
void | include (Box2D const &other) noexcept |
Expand this to ensure that this->contains(other). More... | |
void | clip (Box2D const &other) noexcept |
Shrink this to ensure that other.contains(*this) . More... | |
bool | operator== (Box2D const &other) const noexcept |
Compare two boxes for equality. More... | |
bool | operator!= (Box2D const &other) const noexcept |
Compare two boxes for equality. More... | |
std::size_t | hash_value () const noexcept |
Return a hash of this object. More... | |
std::vector< Point2D > | getCorners () const |
Get the corner points. More... | |
std::string | toString () const |
Min/Max Accessors | |
Return the minimum (inclusive) and maximum (exclusive) coordinates of the box. | |
Point2D const | getMin () const noexcept |
double | getMinX () const noexcept |
double | getMinY () const noexcept |
Point2D const | getMax () const noexcept |
double | getMaxX () const noexcept |
double | getMaxY () const noexcept |
Size Accessors | |
Return the size of the box. | |
Extent2D const | getDimensions () const noexcept |
double | getWidth () const noexcept |
double | getHeight () const noexcept |
double | getArea () const noexcept |
Center Accessors | |
Return the center coordinate of the box. | |
Point2D const | getCenter () const noexcept |
double | getCenterX () const noexcept |
double | getCenterY () const noexcept |
Static Public Member Functions | |
static Box2D | makeCenteredBox (Point2D const ¢er, Extent const &size) noexcept |
Create a box centered on a particular point. More... | |
Static Public Attributes | |
static double const | EPSILON = std::numeric_limits<double>::epsilon() * 2 |
Value the maximum coordinate is multiplied by to increase it by the smallest possible amount. More... | |
static double const | INVALID = std::numeric_limits<double>::quiet_NaN() |
Value used to specify undefined coordinate values. More... | |
A floating-point coordinate rectangle geometry.
Box2D is a half-open (minimum is inclusive, maximum is exclusive) box. A box never has negative dimensions; the empty box is defined to zero-size dimensions and its minimum and maximum values set to NaN. Only the empty box may have zero-size dimensions.
typedef double lsst::geom::Box2D::Element |
typedef Extent2D lsst::geom::Box2D::Extent |
typedef Point2D lsst::geom::Box2D::Point |
|
noexcept |
|
noexcept |
Construct a box from its minimum and maximum points.
If any(minimum == maximum), the box will always be empty (even if invert==true).
[in] | minimum | Minimum (lower left) coordinate (inclusive). |
[in] | maximum | Maximum (upper right) coordinate (exclusive). |
[in] | invert | If true (default), swap the minimum and maximum coordinates if minimum > maximum instead of creating an empty box. |
|
noexcept |
Construct a box from one corner and dimensions.
[in] | corner | Reference coordinate (inclusive). This is the lower left corner if both dimensions are positive, but a right corner or upper corner if the corresponding dimension is negative and invert is set. |
[in] | dimensions | Box dimensions. If either dimension coordinate is 0, the box will be empty. |
[in] | invert | If true (default), invert any negative dimensions instead of creating an empty box. |
|
explicitnoexcept |
Construct a floating-point box from an integer box.
Integer to floating-point box conversion is based on the concept that a pixel is not an infinitesimal point but rather a square of unit size centered on integer-valued coordinates. While the output floating-point box thus has the same dimensions as the input integer box, its minimum/maximum coordinates are 0.5 smaller/greater.
|
defaultnoexcept |
Standard copy constructor.
|
defaultnoexcept |
|
defaultnoexcept |
|
noexcept |
|
noexcept |
|
noexcept |
void lsst::geom::Box2D::flipLR | ( | float | xExtent | ) |
void lsst::geom::Box2D::flipTB | ( | float | yExtent | ) |
|
inlinenoexcept |
std::vector< Point2D > lsst::geom::Box2D::getCorners | ( | ) | const |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
void lsst::geom::Box2D::grow | ( | Extent2D const & | buffer | ) |
|
noexcept |
|
noexcept |
|
noexcept |
|
inlinenoexcept |
|
staticnoexcept |
Create a box centered on a particular point.
center | The desired center of the box. |
size | The desired width and height (in that order) of the box. |
size
is positive, a box with size size
; otherwise, an empty box. If the returned box is not empty, it shall be centered on center
. Behavior is undefined if either center
or size
is non-finite.
|
noexcept |
|
noexcept |
|
noexcept |
void lsst::geom::Box2D::shift | ( | Extent2D const & | offset | ) |
|
inline |
|
static |
|
static |