|
| 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 Polygon & | operator= (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> |
| Polygon & | operator= (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 PointType & | operator[] (int idx) |
| | Retrieves the vertex at index idx. More...
|
| |
| AXOM_HOST_DEVICE const PointType & | operator[] (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) |
| |
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
-
| T | the coordinate type, e.g., double, float, etc. |
| NDIMS | the number of dimensions |
| PolygonArray | the 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_VERTS | the 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
template<typename T , int NDIMS, PolygonArray ARRAY_TYPE = PolygonArray::Dynamic, int MAX_VERTS = DEFAULT_MAX_NUM_VERTICES>
template<int TDIM = NDIMS>
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().