AXOM
Axom provides a robust, flexible software infrastructure for the development of multi-physics applications and computational tools.
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS > Class Template Reference

Represents a polygon defined by an array of points. More...

#include </home/docs/checkouts/readthedocs.org/user_builds/axom/checkouts/develop/src/axom/primal/geometry/Polygon.hpp>

Public Types

using PointType = Point< T, NDIMS >
 
using VectorType = Vector< T, NDIMS >
 
using ArrayType = std::conditional_t< ARRAY_TYPE==PolygonArray::Dynamic, axom::Array< PointType >, axom::StaticArray< PointType, MAX_VERTS > >
 

Public Member Functions

template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
 Polygon ()
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE Polygon ()
 Default constructor for an empty polygon (static array specialization) More...
 
AXOM_SUPPRESS_HD_WARN AXOM_HOST_DEVICE ~Polygon ()
 Destructor for Polygon. Suppress CUDA warnings for dynamic axom::Array. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE Polygonoperator= (const Polygon &other)
 Copy assignment operator for Polygon (static array specialization). Specializations are necessary to remove warnings. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
Polygonoperator= (const Polygon &other)
 Copy assignment operator for Polygon. (dynamic array specialization) More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
 Polygon (const Polygon &other)
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE Polygon (const Polygon &other)
 Copy constructor for Polygon (static array specialization) More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
 Polygon (int numExpectedVerts)
 Constructor for an empty polygon that reserves space for the given number of vertices. Only available for dynamic arrays. More...
 
 Polygon (const axom::Array< PointType > &vertices)
 Constructor for a polygon with the given vertices. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
 Polygon (std::initializer_list< PointType > vertices)
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE Polygon (std::initializer_list< PointType > vertices)
 
AXOM_HOST_DEVICE int numVertices () const
 Return the number of vertices in the polygon. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
void clear ()
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE void clear ()
 Clears the list of vertices (static array specialization) More...
 
AXOM_HOST_DEVICE PointTypeoperator[] (int idx)
 Retrieves the vertex at index idx. More...
 
AXOM_HOST_DEVICE const PointTypeoperator[] (int idx) const
 Retrieves the vertex at index idx. More...
 
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if< TDIM==3, VectorType >::type normal () const
 Robustly returns the normal of the polygon (not normalized) More...
 
AXOM_HOST_DEVICE void reverseOrientation ()
 Reverses orientation of the polygon in-place. More...
 
AXOM_HOST_DEVICE PointType vertexMean () const
 Computes the average of the polygon's vertex positions. More...
 
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if< TDIM==3, double >::type area () const
 Returns the area of the polygon (3D specialization) More...
 
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if< TDIM==2, double >::type area () const
 Returns the area of a planar polygon (2D specialization) More...
 
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if< TDIM==2, double >::type signedArea () const
 Returns the signed area of a 2D polygon. More...
 
std::ostream & print (std::ostream &os) const
 Simple formatted print of a polygon instance. More...
 
AXOM_HOST_DEVICE bool isValid () const
 Simple check for validity of a polygon. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE void addVertex (const PointType &pt)
 Appends a vertex to the list of vertices. More...
 
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
AXOM_HOST_DEVICE void addVertex (const PointType &pt)
 

Detailed Description

template<typename T, int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
class axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >

Represents a polygon defined by an array of points.

Template Parameters
Tthe coordinate type, e.g., double, float, etc.
NDIMSthe number of dimensions
PolygonArraythe array type of the polygon can be dynamic or static (default is dynamic). The static array type is for use in a device kernel.
MAX_VERTSthe max number of vertices to preallocate space for a static array (default max is 8 vertices). MAX_VERTS is unused if array type is dynamic.
Note
The polygon vertices should be ordered in a counter clockwise orientation with respect to the polygon's desired normal vector

Member Typedef Documentation

◆ PointType

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
using axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::PointType = Point<T, NDIMS>

◆ VectorType

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
using axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::VectorType = Vector<T, NDIMS>

◆ ArrayType

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
using axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::ArrayType = std::conditional_t<ARRAY_TYPE == PolygonArray::Dynamic, axom::Array<PointType>, axom::StaticArray<PointType, MAX_VERTS> >

Constructor & Destructor Documentation

◆ Polygon() [1/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( )
inline

Default constructor for an empty polygon (dynamic array specialization). Specializations are necessary to remove host device warning for axom::Array usage with the dynamic array type.

◆ Polygon() [2/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( )
inline

Default constructor for an empty polygon (static array specialization)

◆ ~Polygon()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_SUPPRESS_HD_WARN AXOM_HOST_DEVICE axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::~Polygon ( )
inline

Destructor for Polygon. Suppress CUDA warnings for dynamic axom::Array.

◆ Polygon() [3/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( const Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS > &  other)
inline

Copy constructor for Polygon. Specializations are necessary to remove host device warning for axom::Array usage with the dynamic array type.

◆ Polygon() [4/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( const Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS > &  other)
inline

Copy constructor for Polygon (static array specialization)

◆ Polygon() [5/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( int  numExpectedVerts)
inlineexplicit

Constructor for an empty polygon that reserves space for the given number of vertices. Only available for dynamic arrays.

Parameters
[in]numExpectedVertsnumber of vertices for which to reserve space
Precondition
numExpectedVerts is not negative

References SLIC_ASSERT.

◆ Polygon() [6/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( const axom::Array< PointType > &  vertices)
inlineexplicit

Constructor for a polygon with the given vertices.

◆ Polygon() [7/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( std::initializer_list< PointType vertices)
inlineexplicit

◆ Polygon() [8/8]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::Polygon ( std::initializer_list< PointType vertices)
inlineexplicit

References SLIC_ASSERT.

Member Function Documentation

◆ operator=() [1/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE Polygon& axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::operator= ( const Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS > &  other)
inline

Copy assignment operator for Polygon (static array specialization). Specializations are necessary to remove warnings.

◆ operator=() [2/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
Polygon& axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::operator= ( const Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS > &  other)
inline

Copy assignment operator for Polygon. (dynamic array specialization)

◆ numVertices()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE int axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices ( ) const
inline

Return the number of vertices in the polygon.

◆ addVertex() [1/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE void axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::addVertex ( const PointType pt)
inline

Appends a vertex to the list of vertices.

Parameters
[in]ptthe point to be appended to the list of vertices
Note
If the array type is static and the list of vertices is full, addVertex will not modify the list of vertices.
See also
axom::StaticArray::push_back() for behavior when array type is static and the list of vertices is full.

◆ addVertex() [2/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
AXOM_HOST_DEVICE void axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::addVertex ( const PointType pt)
inline

◆ clear() [1/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Dynamic, int > = 0>
void axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::clear ( )
inline

Clears the list of vertices (dynamic array specialization). Specializations are necessary to remove host device warning for axom::Array usage with the dynamic array type.

◆ clear() [2/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<PolygonArray P_ARRAY_TYPE = ARRAY_TYPE, std::enable_if_t< P_ARRAY_TYPE==PolygonArray::Static, int > = 0>
AXOM_HOST_DEVICE void axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::clear ( )
inline

Clears the list of vertices (static array specialization)

◆ operator[]() [1/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE PointType& axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::operator[] ( int  idx)
inline

Retrieves the vertex at index idx.

◆ operator[]() [2/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE const PointType& axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::operator[] ( int  idx) const
inline

Retrieves the vertex at index idx.

◆ normal()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if<TDIM == 3, VectorType>::type axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::normal ( ) const
inline

Robustly returns the normal of the polygon (not normalized)

Precondition
This function is only valid when NDIMS = 3 and the polygon is valid
Returns
normal polygon normal vector

References axom::primal::Vector< T, NDIMS >::cross_product(), axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::isValid(), axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices(), and SLIC_ASSERT.

◆ reverseOrientation()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE void axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::reverseOrientation ( )
inline

Reverses orientation of the polygon in-place.

References axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices(), and axom::utilities::swap().

◆ vertexMean()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE PointType axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::vertexMean ( ) const
inline

Computes the average of the polygon's vertex positions.

Returns
A point at the mean of the polygon's vertices
Precondition
polygon.isValid() is true

References axom::primal::Point< T, NDIMS >::array(), axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::isValid(), axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices(), and SLIC_ASSERT.

◆ area() [1/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if<TDIM == 3, double>::type axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::area ( ) const
inline

Returns the area of the polygon (3D specialization)

The algorithm sums up contributions from triangles defined by each edge of the polygon and a local origin (at the Polygon's vertexMean()). The algorithm assumes a planar polygon embedded in 3D, however it will return a value for non-planar polygons.

The area is always non-negative since 3D polygons do not have a unique orientation.

References axom::utilities::abs(), axom::primal::Vector< T, NDIMS >::cross_product(), axom::primal::Vector< T, NDIMS >::norm(), axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices(), and axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::vertexMean().

◆ area() [2/2]

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if<TDIM == 2, double>::type axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::area ( ) const
inline

Returns the area of a planar polygon (2D specialization)

The area is always non-negative.

See also
signedArea()

References axom::utilities::abs(), and axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::signedArea().

◆ signedArea()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<int TDIM = NDIMS>
AXOM_HOST_DEVICE std::enable_if<TDIM == 2, double>::type axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::signedArea ( ) const
inline

Returns the signed area of a 2D polygon.

The signed area accounts for the orientation of the polygon. It is positive when the vertices are oriented counter-clockwise and negative when the vertices are oriented clockwise.

Note
Signed area is only defined in 2D.
See also
area()

References axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices().

◆ print()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
std::ostream& axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::print ( std::ostream &  os) const
inline

Simple formatted print of a polygon instance.

Parameters
osThe output stream to write to
Returns
A reference to the modified ostream

References axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::numVertices().

◆ isValid()

template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
AXOM_HOST_DEVICE bool axom::primal::Polygon< T, NDIMS, ARRAY_TYPE, MAX_VERTS >::isValid ( ) const
inline

Simple check for validity of a polygon.

Initial check is that the polygon has three or more vertices

Returns
True, if the polygon is valid, False otherwise

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