3#include "../FoundationBase.h"
18 using List = std::vector<Polygon>;
25 void setPoints(
const PointList& pointList);
26 void addPoint(
const glm::vec3& point);
31 const glm::vec3&
getPoint(
size_t idx)
const {
return points[idx]; }
33 float calcArea()
const {
return std::fabs(calcSignedArea(points.begin(), points.end())); }
36 List add(
const Polygon& polygon)
const;
37 List subtract(
const Polygon& polygon)
const;
42 static bool isClockwise(
const PointList& pointList);
43 static bool isPointInside(
const glm::vec3& p,
const PointList& pointList);
44 static float calcSignedArea(
const PointList::const_iterator& start,
const PointList::const_iterator& end);
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
Generic 2D concave or convex polygon.
Definition: Polygon.h:16
size_t getNoOfPoints() const
Definition: Polygon.h:32
Polygon(const Polygon &)=default
bool isPointInside(const glm::vec3 &p) const
Definition: Polygon.h:34
float calcArea() const
Definition: Polygon.h:33
std::vector< Polygon > List
Definition: Polygon.h:18
PointList points
Definition: Polygon.h:40
std::vector< glm::vec3 > PointList
Definition: Polygon.h:19
const PointList & getPoints() const
Definition: Polygon.h:30
const glm::vec3 & getPoint(size_t idx) const
Definition: Polygon.h:31
Main Cogs namespace.
Definition: MortonCode.h:5