17 #include <geos/triangulate/polygon/VertexSequencePackedRtree.h>
30 namespace triangulate {
44 namespace triangulate {
74 static constexpr std::size_t NO_VERTEX_INDEX = std::numeric_limits<std::size_t>::max();
76 bool isFlatCornersSkipped =
false;
83 std::vector<Coordinate> vertex;
84 std::vector<std::size_t> vertexNext;
85 std::size_t vertexSize;
88 std::size_t vertexFirst;
91 std::array<std::size_t, 3> cornerIndex;
101 std::vector<std::size_t> createNextLinks(std::size_t size)
const;
103 bool isValidEar(std::size_t cornerIndex,
const std::array<Coordinate, 3>& corner);
117 std::size_t findIntersectingVertex(std::size_t cornerIndex,
const std::array<Coordinate, 3>& corner)
const;
128 bool isValidEarScan(std::size_t cornerIndex,
const std::array<Coordinate, 3>& corner)
const;
131 static Envelope envelope(
const std::array<Coordinate, 3>& corner);
138 bool isRemoved(std::size_t vertexIndex)
const;
140 void initCornerIndex();
147 void fetchCorner(std::array<Coordinate, 3>& cornerVertex)
const;
152 void nextCorner(std::array<Coordinate, 3>& cornerVertex);
161 std::size_t nextIndex(std::size_t index)
const;
163 bool isConvex(
const std::array<Coordinate, 3>& pts)
const;
165 bool isFlat(
const std::array<Coordinate, 3>& pts)
const;
167 bool hasRepeatedPoint(
const std::array<Coordinate, 3>& pts)
const;
206 void compute(
TriList& triList);
208 std::unique_ptr<Polygon> toGeometry()
const;
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:58
Represents a linear polygon, which may include holes.
Definition: Polygon.h:64
Definition: PolygonEarClipper.h:68
PolygonEarClipper(std::vector< Coordinate > &polyShell)
void setSkipFlatCorners(bool p_isFlatCornersSkipped)
static void triangulate(std::vector< Coordinate > &polyShell, TriList &triListResult)
Definition: VertexSequencePackedRtree.h:50
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26