lsst.sphgeom gafb225b75d+afb4790f61
 
Loading...
Searching...
No Matches
lsst::sphgeom::ConvexPolygon Class Reference

#include <ConvexPolygon.h>

Inheritance diagram for lsst::sphgeom::ConvexPolygon:
lsst.sphgeom._continue_class.Region

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< Regionclone () 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< ConvexPolygondecode (std::vector< std::uint8_t > const &s)
 
static std::unique_ptr< ConvexPolygondecode (std::uint8_t const *buffer, size_t n)
 

Static Public Attributes

static constexpr std::uint8_t TYPE_CODE = 'p'
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ ConvexPolygon() [1/3]

lsst::sphgeom::ConvexPolygon::ConvexPolygon ( std::vector< UnitVector3d > const & points)
explicit

This constructor creates a convex polygon that is the convex hull of the given set of points.

◆ ConvexPolygon() [2/3]

lsst::sphgeom::ConvexPolygon::ConvexPolygon ( UnitVector3d const & v0,
UnitVector3d const & v1,
UnitVector3d const & v2 )
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!

◆ ConvexPolygon() [3/3]

lsst::sphgeom::ConvexPolygon::ConvexPolygon ( UnitVector3d const & v0,
UnitVector3d const & v1,
UnitVector3d const & v2,
UnitVector3d const & v3 )
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!

Member Function Documentation

◆ contains()

bool lsst::sphgeom::ConvexPolygon::contains ( UnitVector3d const & v) const
override

contains returns true if the intersection of this convex polygon and x is equal to x.

◆ convexHull()

static ConvexPolygon lsst::sphgeom::ConvexPolygon::convexHull ( std::vector< UnitVector3d > const & points)
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.

◆ decode()

static std::unique_ptr< ConvexPolygon > lsst::sphgeom::ConvexPolygon::decode ( std::vector< std::uint8_t > const & s)
inlinestatic

decode deserializes a ConvexPolygon from a byte string produced by encode.

◆ getCentroid()

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.

◆ intersects()

bool lsst::sphgeom::ConvexPolygon::intersects ( Region const & r) const

intersects returns true if the intersection of this convex polygon and x is non-empty.

◆ isDisjointFrom()

bool lsst::sphgeom::ConvexPolygon::isDisjointFrom ( Region const & r) const

isDisjointFrom returns true if the intersection of this convex polygon and x is empty.

◆ isWithin()

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.


The documentation for this class was generated from the following files: