#include <ConvexPolygon.h>
Public Member Functions | |
| 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 |
| bool | isEmpty () const override |
| Box | getBoundingBox () const override |
| Box3d | getBoundingBox3d () const override |
| Circle | getBoundingCircle () const override |
| 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 |
| 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 (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 |
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 ConvexPolygon | convexHull (std::vector< UnitVector3d > const &points) |
| static std::unique_ptr< ConvexPolygon > | decode (std::vector< std::uint8_t > const &s) |
| static std::unique_ptr< ConvexPolygon > | decode (std::uint8_t const *buffer, size_t n) |
Static Public Attributes | |
| static constexpr std::uint8_t | TYPE_CODE = 'p' |
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.
|
explicit |
This constructor creates a convex polygon that is the convex hull of the given set of points.
|
inline |
This constructor creates a triangle with the given vertices.
It is assumed that orientation(v0, v1, v2) = 1. Use with caution - for performance reasons, this is not verified!
|
inline |
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!
|
override |
contains returns true if the intersection of this convex polygon and x is equal to x.
|
inlinestatic |
convexHull returns the convex hull of the given set of points if it exists and throws an exception otherwise. Though points are supplied in a vector, they really are conceptually a set - the ConvexPolygon returned is invariant under permutation of the input array.
|
inlinestatic |
decode deserializes a ConvexPolygon from a byte string produced by encode.
| UnitVector3d lsst::sphgeom::ConvexPolygon::getCentroid | ( | ) | const |
The centroid of a polygon is its center of mass projected onto S², assuming a uniform mass distribution over the polygon surface.
| bool lsst::sphgeom::ConvexPolygon::intersects | ( | Region const & | r | ) | const |
intersects returns true if the intersection of this convex polygon and x is non-empty.
| bool lsst::sphgeom::ConvexPolygon::isDisjointFrom | ( | Region const & | r | ) | const |
isDisjointFrom returns true if the intersection of this convex polygon and x is empty.
| bool lsst::sphgeom::ConvexPolygon::isWithin | ( | Region const & | r | ) | const |
isWithin returns true if the intersection of this convex polygon and x is this convex polygon.