17#include <geos/triangulate/tri/TriList.h>
34namespace triangulate {
41#include <geos/triangulate/tri/Tri.h>
103 static constexpr int FRAME_EXPAND_FACTOR = 4;
107 double maxEdgeLength;
108 double maxEdgeLengthRatio;
112 std::set<Tri*> hullTris;
113 std::deque<Tri*> borderTriQue;
114 std::vector<const LinearRing*> polygonRings;
121 std::map<Tri*, TriIndex> borderEdgeMap;
125 std::unique_ptr<Geometry> createEmptyHull();
127 static void extractShellRings(
129 std::vector<const LinearRing*>& rings);
131 void buildHullTris();
144 std::unique_ptr<Polygon> createFrame(
147 double computeTargetEdgeLength(
150 double edgeLengthRatio)
const;
156 void removeFrameCornerTris(
168 TriIndex vertexIndex(
172 void removeBorderTris();
174 void removeHoleTris();
176 Tri* findHoleSeedTri()
const;
178 bool isHoleSeedTri(
const Tri* tri)
const;
180 bool isBorderTri(
const Tri* tri)
const;
182 bool isRemovable(
const Tri* tri)
const;
193 bool isTouchingSinglePolygon(
const Tri* tri)
const;
195 void addBorderTris(
Tri* tri);
209 void addBorderTri(
Tri* tri, TriIndex index);
211 void removeBorderTri(
Tri* tri);
213 bool hasAllVertices(
const LinearRing* ring,
const Tri* tri)
const;
217 void envelope(
const Tri* tri,
Envelope& env)
const;
219 std::unique_ptr<Geometry> createHullGeometry(
bool isIncludeInput);
232 static std::unique_ptr<Geometry>
247 static std::unique_ptr<Geometry>
249 const Geometry* polygons,
double maxLength,
250 bool isTight,
bool isHolesAllowed);
260 static std::unique_ptr<Geometry>
275 static std::unique_ptr<Geometry>
277 const Geometry* polygons,
double lengthRatio,
278 bool isTight,
bool isHolesAllowed);
288 static std::unique_ptr<Geometry>
299 static std::unique_ptr<Geometry>
Definition: ConcaveHullOfPolygons.h:97
void setTight(bool p_isTight)
std::unique_ptr< Geometry > getFill()
static std::unique_ptr< Geometry > concaveHullByLengthRatio(const Geometry *polygons, double lengthRatio, bool isTight, bool isHolesAllowed)
static std::unique_ptr< Geometry > concaveHullByLength(const Geometry *polygons, double maxLength, bool isTight, bool isHolesAllowed)
static std::unique_ptr< Geometry > concaveHullByLength(const Geometry *polygons, double maxLength)
static std::unique_ptr< Geometry > concaveHullByLengthRatio(const Geometry *polygons, double lengthRatio)
void setMaximumEdgeLength(double edgeLength)
static std::unique_ptr< Geometry > concaveFillByLengthRatio(const Geometry *polygons, double lengthRatio)
std::unique_ptr< Geometry > getHull()
ConcaveHullOfPolygons(const Geometry *geom)
void setHolesAllowed(bool p_isHolesAllowed)
void setMaximumEdgeLengthRatio(double edgeLengthRatio)
static std::unique_ptr< Geometry > concaveFillByLength(const Geometry *polygons, double maxLength)
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:44
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:58
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:58
Represents a collection of heterogeneous Geometry objects.
Definition: GeometryCollection.h:52
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:66
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:186
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple.
Definition: LinearRing.h:55
Represents a linear polygon, which may include holes.
Definition: Polygon.h:61
Basic namespace for all GEOS functionalities.
Definition: geos.h:39