17 #include <geos/geom/Coordinate.h>
18 #include <geos/noding/SegmentSetMutualIntersector.h>
20 #include <unordered_map>
31 namespace triangulate {
48 namespace triangulate {
70 static constexpr
double EPS = 1.0E-4;
72 std::vector<Coordinate> shellCoords;
75 std::set<Coordinate> orderedCoords;
78 std::unordered_map<Coordinate, std::vector<Coordinate>, Coordinate::HashCode> cutMap;
80 std::unique_ptr<noding::SegmentSetMutualIntersector> polygonIntersector;
85 std::vector<std::unique_ptr<noding::SegmentString>> polySegStringStore;
89 static std::vector<Coordinate> ringCoordinates(
const LinearRing* ring);
116 std::size_t getShellCoordIndexSkip(
const Coordinate& coord, std::size_t numSkip);
126 std::vector<Coordinate> getLeftShellVertex(
const Coordinate& holeCoord);
155 void addHoleToShell(std::size_t shellVertexIndex,
const CoordinateSequence* holeCoords, std::size_t holeVertexIndex);
163 std::vector<const LinearRing*> sortHoles(
const Polygon* poly);
171 std::vector<std::size_t> getLeftMostVertex(
const LinearRing* ring);
173 std::unique_ptr<noding::SegmentSetMutualIntersector> createPolygonIntersector(
const Polygon* polygon);
180 static std::vector<Coordinate> join(
const Polygon* inputPolygon);
181 static std::unique_ptr<Polygon> joinAsPolygon(
const Polygon* inputPolygon);
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:58
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:57
Represents a linear polygon, which may include holes.
Definition: Polygon.h:64
Definition: PolygonHoleJoiner.h:64
std::vector< Coordinate > compute()
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26