17 #include <geos/geom/Coordinate.h>
18 #include <geos/noding/SegmentSetMutualIntersector.h>
20 #include <unordered_map>
31 namespace triangulate {
48 namespace triangulate {
66 static constexpr
double EPS = 1.0E-4;
68 std::vector<Coordinate> shellCoords;
71 std::set<Coordinate> orderedCoords;
74 std::unordered_map<Coordinate, std::vector<Coordinate>, Coordinate::HashCode> cutMap;
76 std::unique_ptr<noding::SegmentSetMutualIntersector> polygonIntersector;
81 std::vector<std::unique_ptr<noding::SegmentString>> polySegStringStore;
85 static std::vector<Coordinate> ringCoordinates(
const LinearRing* ring);
112 std::size_t getShellCoordIndexSkip(
const Coordinate& coord, std::size_t numSkip);
122 std::vector<Coordinate> getLeftShellVertex(
const Coordinate& holeCoord);
151 void addHoleToShell(std::size_t shellVertexIndex,
const CoordinateSequence* holeCoords, std::size_t holeVertexIndex);
159 std::vector<const LinearRing*> sortHoles(
const Polygon* poly);
167 std::vector<std::size_t> getLeftMostVertex(
const LinearRing* ring);
169 std::unique_ptr<noding::SegmentSetMutualIntersector> createPolygonIntersector(
const Polygon* polygon);
176 static std::vector<Coordinate> join(
const Polygon* inputPolygon);
177 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:60
std::vector< Coordinate > compute()
Basic namespace for all GEOS functionalities.
Definition: Angle.h:26