17#include <geos/geom/Triangle.h>
18#include <geos/triangulate/tri/Tri.h>
19#include <geos/triangulate/tri/TriList.h>
20#include <geos/triangulate/quadedge/TriangleVisitor.h>
21#include <geos/algorithm/hull/HullTri.h>
55typedef std::priority_queue<HullTri*, std::vector<HullTri*>, HullTri::HullTriCompare> HullTriQueue;
95class GEOS_DLL ConcaveHull {
100 : inputGeometry(
geom)
101 , maxEdgeLengthRatio(-1.0)
103 , isHolesAllowed(
false)
104 , criteriaType(PARAM_EDGE_LENGTH)
106 , geomFactory(
geom->getFactory())
135 const Geometry*
geom,
double maxLength,
bool isHolesAllowed);
167 bool isHolesAllowed);
181 bool isHolesAllowed);
240 static constexpr int PARAM_EDGE_LENGTH = 1;
241 static constexpr int PARAM_ALPHA = 2;
245 double maxEdgeLengthRatio;
249 double maxSizeInHull;
253 static double computeTargetEdgeLength(
255 double edgeLengthFactor);
271 void addBorderTri(HullTri* tri, HullTriQueue& queue);
273 void setSize(HullTri* tri);
288 static std::vector<HullTri*> findCandidateHoles(
301 bool isInHull(
const HullTri* tri)
const;
303 bool isRemovableBorder(
const HullTri* tri)
const;
304 bool isRemovableHole(
const HullTri* tri)
const;
306 std::unique_ptr<Geometry> toGeometry(
static std::unique_ptr< Geometry > concaveHullByLengthRatio(const Geometry *geom, double lengthRatio, bool isHolesAllowed)
static std::unique_ptr< Geometry > concaveHullByLengthRatio(const Geometry *geom, double lengthRatio)
void setHolesAllowed(bool holesAllowed)
void setAlpha(double newAlpha)
static double uniformEdgeLength(const Geometry *geom)
static std::unique_ptr< Geometry > alphaShape(const Geometry *geom, double alpha, bool isHolesAllowed)
static std::unique_ptr< Geometry > concaveHullByLength(const Geometry *geom, double maxLength)
void setMaximumEdgeLength(double edgeLength)
void setMaximumEdgeLengthRatio(double edgeLengthRatio)
std::unique_ptr< Geometry > getHull()
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:216
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition GeometryFactory.h:65
Basic implementation of Geometry, constructed and destructed by GeometryFactory.
Definition Geometry.h:186
Represents a planar triangle, and provides methods for calculating various properties of triangles.
Definition Triangle.h:28
A class that contains the QuadEdges representing a planar subdivision that models a triangulation.
Definition QuadEdgeSubdivision.h:78
A class that represents the edge data structure which implements the quadedge algebra.
Definition QuadEdge.h:53
An interface for algorithms which process the triangles in a QuadEdgeSubdivision.
Definition TriangleVisitor.h:33
Classes to implement a topological subdivision of quadeges, to support creating triangulations and Vo...
Definition ConcaveHull.h:33
Classes to compute Delaunay triangulations.
Definition ConcaveHull.h:32
Basic namespace for all GEOS functionalities.
Definition geos.h:39