17 #include <geos/triangulate/tri/TriList.h> 34 namespace 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 void buildHullTris();
140 std::unique_ptr<Polygon> createFrame(
143 double computeTargetEdgeLength(
146 double edgeLengthRatio)
const;
152 void removeFrameCornerTris(
164 TriIndex vertexIndex(
168 void removeBorderTris();
170 void removeHoleTris();
172 Tri* findHoleSeedTri()
const;
174 bool isHoleSeedTri(
const Tri* tri)
const;
176 bool isBorderTri(
const Tri* tri)
const;
178 bool isRemovable(
const Tri* tri)
const;
189 bool isTouchingSinglePolygon(
const Tri* tri)
const;
191 void addBorderTris(
Tri* tri);
205 void addBorderTri(
Tri* tri, TriIndex index);
207 void removeBorderTri(
Tri* tri);
209 bool hasAllVertices(
const LinearRing* ring,
const Tri* tri)
const;
213 void envelope(
const Tri* tri,
Envelope& env)
const;
215 std::unique_ptr<Geometry> createHullGeometry(
bool isIncludeInput);
228 static std::unique_ptr<Geometry>
229 concaveHullByLength(
const Geometry* polygons,
double maxLength);
243 static std::unique_ptr<Geometry>
245 const Geometry* polygons,
double maxLength,
246 bool isTight,
bool isHolesAllowed);
256 static std::unique_ptr<Geometry>
257 concaveHullByLengthRatio(
const Geometry* polygons,
double lengthRatio);
271 static std::unique_ptr<Geometry>
272 concaveHullByLengthRatio(
273 const Geometry* polygons,
double lengthRatio,
274 bool isTight,
bool isHolesAllowed);
284 static std::unique_ptr<Geometry>
285 concaveFillByLength(
const Geometry* polygons,
double maxLength);
295 static std::unique_ptr<Geometry>
296 concaveFillByLengthRatio(
const Geometry* polygons,
double lengthRatio);
318 void setMaximumEdgeLength(
double edgeLength);
334 void setMaximumEdgeLengthRatio(
double edgeLengthRatio);
341 void setHolesAllowed(
bool p_isHolesAllowed);
349 void setTight(
bool p_isTight);
356 std::unique_ptr<Geometry> getHull();
364 std::unique_ptr<Geometry> getFill();
Definition: ConcaveHullOfPolygons.h:97
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:59
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:217
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition: Geometry.h:197
Represents a linear polygon, which may include holes.
Definition: Polygon.h:61
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:70
Represents a collection of heterogeneous Geometry objects.
Definition: GeometryCollection.h:51
Basic namespace for all GEOS functionalities.
Definition: Angle.h:25
Models an OGC SFS LinearRing. A LinearRing is a LineString which is both closed and simple...
Definition: LinearRing.h:54
The internal representation of a list of coordinates inside a Geometry.
Definition: CoordinateSequence.h:56