#include <Box.h>
Public Member Functions | |
| Box () | |
| This constructor creates an empty box. | |
| Box (LonLat const &p) | |
| This constructor creates a box containing a single point. | |
| Box (LonLat const &p1, LonLat const &p2) | |
| Box (LonLat const &p, Angle w, Angle h) | |
| Box (NormalizedAngleInterval const &lon, AngleInterval const &lat) | |
| bool | operator== (Box const &b) const |
| Two boxes are equal if they contain the same points. | |
| bool | operator!= (Box const &b) const |
| bool | operator== (LonLat const &p) const |
| A box is equal to a point p if it contains only p. | |
| bool | operator!= (LonLat const &p) const |
| NormalizedAngleInterval const & | getLon () const |
getLon returns the longitude interval of this box. | |
| AngleInterval const & | getLat () const |
getLat returns the latitude interval of this box. | |
| bool | isEmpty () const override |
isEmpty returns true if this box does not contain any points. | |
| bool | isFull () const |
| LonLat | getCenter () const |
| NormalizedAngle | getWidth () const |
| Angle | getHeight () const |
| Box & | clipTo (LonLat const &x) |
| Box & | clipTo (Box const &x) |
| Box | clippedTo (LonLat const &x) const |
clippedTo returns the intersection of this box and x. | |
| Box | clippedTo (Box const &x) const |
| Box & | dilateBy (Angle r) |
| Box | dilatedBy (Angle r) const |
| Box & | dilateBy (Angle w, Angle h) |
| Box | dilatedBy (Angle w, Angle h) const |
| Box & | erodeBy (Angle r) |
| Box & | erodeBy (Angle w, Angle h) |
| Box | erodedBy (Angle r) const |
| Box | erodedBy (Angle w, Angle h) const |
| Relationship | relate (LonLat const &p) const |
| double | getArea () const |
getArea returns the area of this box in steradians. | |
| std::unique_ptr< Region > | clone () const override |
| Box | getBoundingBox () const override |
| Box3d | getBoundingBox3d () const override |
| Circle | getBoundingCircle () const override |
| bool | contains (UnitVector3d const &v) const override |
| Relationship | relate (Region const &r) const override |
| Relationship | relate (Box const &b) const override |
| Relationship | relate (Circle const &) const override |
| Relationship | relate (ConvexPolygon const &) const override |
| Relationship | relate (Ellipse const &) const override |
| TriState | overlaps (Region const &other) const override |
| TriState | overlaps (Box const &) const override |
| TriState | overlaps (Circle const &) const override |
| TriState | overlaps (ConvexPolygon const &) const override |
| TriState | overlaps (Ellipse const &) const override |
| std::vector< std::uint8_t > | encode () const override |
| bool | contains (LonLat const &x) const |
| bool | contains (Box const &x) const |
| bool | isDisjointFrom (LonLat const &x) const |
| bool | isDisjointFrom (Box const &x) const |
| bool | intersects (LonLat const &x) const |
| bool | intersects (Box const &x) const |
| bool | isWithin (LonLat const &x) const |
| bool | isWithin (Box const &x) const |
| Box & | expandTo (LonLat const &x) |
| Box & | expandTo (Box const &x) |
| Box | expandedTo (LonLat const &x) const |
| Box | expandedTo (Box const &x) const |
Public Member Functions inherited from lsst.sphgeom._continue_class.Region | |
| Region | from_ivoa_pos (cls, str pos) |
| str | to_ivoa_pos (self) |
Static Public Member Functions | |
| static Box | fromDegrees (double lon1, double lat1, double lon2, double lat2) |
| static Box | fromRadians (double lon1, double lat1, double lon2, double lat2) |
| static Box | empty () |
| static Box | full () |
| static NormalizedAngle | halfWidthForCircle (Angle r, Angle lat) |
| static NormalizedAngleInterval | allLongitudes () |
| static AngleInterval | allLatitudes () |
| static std::unique_ptr< Box > | decode (std::vector< std::uint8_t > const &s) |
| static std::unique_ptr< Box > | decode (std::uint8_t const *buffer, size_t n) |
Static Public Attributes | |
| static constexpr std::uint8_t | TYPE_CODE = 'b' |
Box represents a rectangle in spherical coordinate space that contains its boundary. A box can be empty or full (equal to the entire unit sphere), and may contain just a single point. Besides the usual rectangular regions, a box can also represent polar caps or annuli (i.e. when the box spans all longitudes).
For any instance b of this class, the following properties hold:
This constructor creates a box spanning the longitude interval [p1.getLon(), p2.getLon()] and latitude interval [p1.getLat(), p2.getLat()].
This constructor creates a box with center p, half-width (in longitude angle) w and half-height (in latitude angle) h.
|
inline |
This constructor creates a box spanning the given longitude and latitude intervals.
|
inlinestatic |
allLatitudes returns an angle interval containing all valid latitude angles.
|
inlinestatic |
allLongitudes returns a normalized angle interval containing all valid longitude angles.
clippedTo returns the smallest box containing the intersection of this box and x. The result is not always unique, and x.clippedTo(y) is not guaranteed to equal y.clippedTo(x).
x.clipTo(y) sets x to the smallest box containing the intersection of x and y. The result is not always unique, and x.clipTo(y) is not guaranteed to equal y.clipTo(x).
clipTo shrinks this box until it contains only x. If this box does not contain x, it is emptied.
|
inline |
contains returns true if the intersection of this box and x is equal to x.
|
inlinestatic |
decode deserializes a Box from a byte string produced by encode.
dilateBy minimally expands this Box to include all points within angular separation r of its boundary.
If this box is empty or full, or if r is non-positive, there is no effect.
dilateBy morphologically dilates or erodes the longitude interval of this box by w, and the latitude interval of this box by h. If w is positive, the longitude interval is dilated by [-w,w]. If w is zero, the corresponding interval is not modified, and if it is negative, the longitude interval is eroded by [w,-w]. The action of h on the latitude interval is analogous.
If this box is empty or full, there is no effect. Furthermore, a box containing the north or south pole is not considered to have a latitude boundary there, so that eroding it will not necessarily remove the pole.
If the desired outcome is the bounding box of points within some angular separation r of this box, then dilateBy(r) must be called, not dilateBy(r, r).
expandedTo returns the smallest box containing the union of this box and x. The result is not always unique, and x.expandedTo(y) is not guaranteed to equal y.expandedTo(x).
expandTo minimally expands this box to contain x. The result is not always unique, and x.expandTo(y) is not guaranteed to equal y.expandTo(x).
|
inline |
getCenter returns the center of this box. It is NaN for empty boxes and arbitrary for full boxes.
|
inline |
getHeight returns the height in latitude angle of this box. It is negative or NaN for empty boxes.
|
inline |
getWidth returns the width in longitude angle of this box. It is NaN for empty boxes.
|
static |
halfWidthForCircle computes the half-width of bounding boxes for circles with radius r and centers at the given latitude. If r is non-positive, the result is zero, and if |lat| + r >= PI/2, the result is PI.
|
inline |
intersects returns true if the intersection of this box and x is non-empty.
|
inline |
isDisjointFrom returns true if the intersection of this box and x is empty.
|
inline |
isFull returns true if this box contains all points on the unit sphere.
|
inline |
isWithin returns true if the intersection of this box and x is this box.