lsst.geom
18.0.0+11
|
An integer coordinate rectangle. More...
#include <Box.h>
Public Types | |
enum | EdgeHandlingEnum { EXPAND, SHRINK } |
typedef Point2I | Point |
typedef Extent2I | Extent |
typedef int | Element |
Public Member Functions | |
Box2I () noexcept | |
Construct an empty box. More... | |
Box2I (Point2I const &minimum, Point2I const &maximum, bool invert=true) | |
Construct a box from its minimum and maximum points. More... | |
Box2I (Point2I const &corner, Extent2I const &dimensions, bool invert=true) | |
Construct a box from one corner and dimensions. More... | |
Box2I (Box2D const &other, EdgeHandlingEnum edgeHandling=EXPAND) | |
Construct an integer box from a floating-point box. More... | |
Box2I (Box2I const &) noexcept=default | |
Standard copy constructor. More... | |
Box2I (Box2I &&) noexcept=default | |
~Box2I () noexcept=default | |
void | swap (Box2I &other) noexcept |
Box2I & | operator= (Box2I const &) noexcept=default |
Standard assignment operator. More... | |
Box2I & | operator= (Box2I &&) noexcept=default |
ndarray::View< boost::fusion::vector2< ndarray::index::Range, ndarray::index::Range > > | getSlices () const |
Return slices to extract the box's region from an ndarray::Array. More... | |
bool | isEmpty () const noexcept |
Return true if the box contains no points. More... | |
bool | contains (Point2I const &point) const noexcept |
Return true if the box contains the point. More... | |
bool | contains (Box2I const &other) const noexcept |
Return true if all points contained by other are also contained by this. More... | |
bool | overlaps (Box2I const &other) const noexcept |
Return true if any points in other are also in this. More... | |
void | grow (int buffer) |
Increase the size of the box by the given buffer amount in all directions. More... | |
void | grow (Extent2I const &buffer) |
Increase the size of the box by the given buffer amount in each direction. More... | |
void | shift (Extent2I const &offset) |
Shift the position of the box by the given offset. More... | |
void | flipLR (int xExtent) |
Flip a bounding box about the y-axis given a parent box of extent (xExtent). More... | |
void | flipTB (int yExtent) |
Flip a bounding box about the x-axis given a parent box of extent (yExtent). More... | |
void | include (Point2I const &point) |
Expand this to ensure that this->contains(point). More... | |
void | include (Box2I const &other) |
Expand this to ensure that this->contains(other). More... | |
void | clip (Box2I const &other) noexcept |
Shrink this to ensure that other.contains(*this) . More... | |
bool | operator== (Box2I const &other) const noexcept |
Compare two boxes for equality. More... | |
bool | operator!= (Box2I 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< Point2I > | getCorners () const |
Get the corner points. More... | |
std::string | toString () const |
Min/Max Accessors | |
Return the minimum and maximum coordinates of the box (inclusive). | |
Point2I const | getMin () const noexcept |
int | getMinX () const noexcept |
int | getMinY () const noexcept |
Point2I const | getMax () const noexcept |
int | getMaxX () const noexcept |
int | getMaxY () const noexcept |
Begin/End Accessors | |
Return STL-style begin (inclusive) and end (exclusive) coordinates for the box. | |
Point2I const | getBegin () const noexcept |
int | getBeginX () const noexcept |
int | getBeginY () const noexcept |
Point2I const | getEnd () const noexcept |
int | getEndX () const noexcept |
int | getEndY () const noexcept |
Size Accessors | |
Return the size of the box in pixels. | |
Extent2I const | getDimensions () const noexcept |
int | getWidth () const noexcept |
int | getHeight () const noexcept |
int | getArea () const |
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 Box2I | makeCenteredBox (Point2D const ¢er, Extent const &size) |
Create a box centered as closely as possible on a particular point. More... | |
An integer coordinate rectangle.
Box2I is an inclusive box that represents a rectangular region of pixels. A box never has negative dimensions; the empty box is defined to have zero-size dimensions, and is treated as though it does not have a well-defined position (regardless of the return value of getMin() or getMax() for an empty box).
typedef int lsst::geom::Box2I::Element |
typedef Extent2I lsst::geom::Box2I::Extent |
typedef Point2I lsst::geom::Box2I::Point |
|
inlinenoexcept |
Construct a box from its minimum and maximum points.
[in] | minimum | Minimum (lower left) coordinate (inclusive). |
[in] | maximum | Maximum (upper right) coordinate (inclusive). |
[in] | invert | If true (default), swap the minimum and maximum coordinates if minimum > maximum instead of creating an empty box. |
lsst::geom::Box2I::Box2I | ( | Point2I const & | corner, |
Extent2I const & | dimensions, | ||
bool | invert = true |
||
) |
Construct a box from one corner and dimensions.
[in] | corner | Reference coordinate. 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. |
lsst::pex::exceptions::OverflowError | Thrown if the maximum Point2I would overflow. |
|
explicit |
Construct an integer box from a floating-point box.
Floating-point to integer 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. Converting a floating-point box to an integer box thus requires a choice on how to handle pixels which are only partially contained by the input floating-point box.
[in] | other | A floating-point box to convert. |
[in] | edgeHandling | If EXPAND, the integer box will contain any pixels that overlap the floating-point box. If SHRINK, the integer box will contain only pixels completely contained by the floating-point box. |
lsst::pex::exceptions::InvalidParameterError | Thrown if other is not finite. |
|
defaultnoexcept |
Standard copy constructor.
|
defaultnoexcept |
|
defaultnoexcept |
|
noexcept |
|
noexcept |
|
noexcept |
void lsst::geom::Box2I::flipLR | ( | int | xExtent | ) |
void lsst::geom::Box2I::flipTB | ( | int | yExtent | ) |
|
inlinenoexcept |
std::vector< Point2I > lsst::geom::Box2I::getCorners | ( | ) | const |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
ndarray::View< boost::fusion::vector2< ndarray::index::Range, ndarray::index::Range > > lsst::geom::Box2I::getSlices | ( | ) | const |
|
inline |
void lsst::geom::Box2I::grow | ( | Extent2I const & | buffer | ) |
|
noexcept |
void lsst::geom::Box2I::include | ( | Point2I const & | point | ) |
void lsst::geom::Box2I::include | ( | Box2I const & | other | ) |
|
inlinenoexcept |
|
static |
Create a box centered as closely as possible 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, its center shall be within half a pixel of center
in either dimension.lsst::pex::exceptions::OverflowError | Thrown if the resulting box would overflow. |
lsst::pex::exceptions::InvalidParameterError | Thrown if center is not finite. |
|
noexcept |
|
noexcept |
|
noexcept |
void lsst::geom::Box2I::shift | ( | Extent2I const & | offset | ) |
|
inline |