|
| ConvexPolygon (std::vector< UnitVector3d > const &points) |
|
| ConvexPolygon (UnitVector3d const &v0, UnitVector3d const &v1, UnitVector3d const &v2) |
|
| ConvexPolygon (UnitVector3d const &v0, UnitVector3d const &v1, UnitVector3d const &v2, UnitVector3d const &v3) |
|
bool | operator== (ConvexPolygon const &p) const |
| Two convex polygons are equal iff they contain the same points.
|
|
bool | operator!= (ConvexPolygon const &p) const |
|
std::vector< UnitVector3d > const & | getVertices () const |
|
UnitVector3d | getCentroid () const |
|
std::unique_ptr< Region > | clone () const override |
| clone returns a deep copy of this region. More...
|
|
Box | getBoundingBox () const override |
| getBoundingBox returns a bounding-box for this region. More...
|
|
Box3d | getBoundingBox3d () const override |
| getBoundingBox3d returns a 3-dimensional bounding-box for this region. More...
|
|
Circle | getBoundingCircle () const override |
| getBoundingCircle returns a bounding-circle for this region. More...
|
|
Relationship | relate (Region const &r) const override |
|
Relationship | relate (Box const &) const override |
|
Relationship | relate (Circle const &) const override |
|
Relationship | relate (ConvexPolygon const &) const override |
|
Relationship | relate (Ellipse const &) const override |
|
std::vector< uint8_t > | encode () const override |
|
virtual bool | contains (UnitVector3d const &) const=0 |
| contains tests whether the given unit vector is inside this region. More...
|
|
bool | contains (double x, double y, double z) const |
|
bool | contains (double lon, double lat) const |
|
|
bool | contains (UnitVector3d const &v) const override |
|
bool | contains (Region const &r) const |
|
|
bool | isDisjointFrom (Region const &r) const |
|
|
bool | intersects (Region const &r) const |
|
|
bool | isWithin (Region const &r) const |
|
virtual std::unique_ptr< Region > | clone () const =0 |
| clone returns a deep copy of this region. More...
|
|
virtual Box | getBoundingBox () const =0 |
| getBoundingBox returns a bounding-box for this region. More...
|
|
virtual Box3d | getBoundingBox3d () const =0 |
| getBoundingBox3d returns a 3-dimensional bounding-box for this region. More...
|
|
virtual Circle | getBoundingCircle () const =0 |
| getBoundingCircle returns a bounding-circle for this region. More...
|
|
virtual bool | contains (UnitVector3d const &) const =0 |
| contains tests whether the given unit vector is inside this region. More...
|
|
bool | contains (double x, double y, double z) const |
|
bool | contains (double lon, double lat) const |
|
virtual std::vector< uint8_t > | encode () const =0 |
|
ConvexPolygon
is a closed convex polygon on the unit sphere. Its edges are great circles (geodesics), and the shorter of the two great circle segments between any two points on the polygon boundary is contained in the polygon.
The vertices of a convex polygon are distinct and have counter-clockwise orientation when viewed from outside the unit sphere. No three consecutive vertices are coplanar and edges do not intersect except at vertices.
Furthermore, if a convex polygon contains a point p of S², then we require that it be disjoint from point -p. This guarantees the existence of a unique shortest great circle segment between any 2 points contained in the polygon, but means e.g. that hemispheres and lunes cannot be represented by convex polygons.
Currently, the only way to construct a convex polygon is to compute the convex hull of a point set.
This constructor creates a quadrilateral with the given vertices.
It is assumed that orientation(v0, v1, v2), orientation(v1, v2, v3), orientation(v2, v3, v0), and orientation (v3, v0, v1) are all 1. Use with caution - for performance reasons, this is not verified!
relate
computes the spatial relationships between this region A and another region B. The return value S is a bitset with the following properties:
- Bit
S & DISJOINT
is set only if A and B do not have any points in common.
- Bit
S & CONTAINS
is set only if A contains all points in B.
- Bit
S & WITHIN
is set only if B contains all points in A.
Said another way: if the CONTAINS, WITHIN or DISJOINT bit is set, then the corresponding spatial relationship between the two regions holds conclusively. If it is not set, the relationship may or may not hold.
These semantics allow for conservative relationship computations. In particular, a Region may choose to implement relate
by replacing itself and/or the argument with a simplified bounding region.
Implements lsst::sphgeom::Region.