20 #ifndef GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H 21 #define GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H 26 #include <unordered_set> 39 class CoordinateSequence;
40 class GeometryCollection;
41 class MultiLineString;
42 class GeometryFactory;
48 namespace triangulate {
51 class TriangleVisitor;
92 static void getTriangleEdges(
const QuadEdge& startQE,
125 virtual void initSubdiv();
156 inline std::deque<QuadEdgeQuartet>&
172 this->locator = std::move(p_locator);
239 return locator->locate(v);
255 return locator->locate(
Vertex(p));
294 bool isFrameEdge(
const QuadEdge& e)
const;
304 bool isFrameBorderEdge(
const QuadEdge& e)
const;
312 bool isFrameVertex(
const Vertex& v)
const;
346 std::unique_ptr<QuadEdgeList> getPrimaryEdges(
bool includeFrame);
356 typedef std::vector<std::unique_ptr<geom::CoordinateSequence>>
TriList;
381 QuadEdge** fetchTriangleToVisit(
QuadEdge* edge, QuadEdgeStack& edgeStack,
bool includeFrame);
389 void getTriangleCoordinates(TriList* triList,
bool includeFrame);
392 class TriangleCoordinatesVisitor;
393 class TriangleCircumcentreVisitor;
443 std::unique_ptr<geom::MultiLineString> getVoronoiDiagramEdges(
const geom::GeometryFactory& geomFact);
456 std::vector<std::unique_ptr<geom::Geometry>> getVoronoiCellPolygons(
const geom::GeometryFactory& geomFact);
469 std::vector<std::unique_ptr<geom::Geometry>> getVoronoiCellEdges(
const geom::GeometryFactory& geomFact);
484 std::unique_ptr<QuadEdgeSubdivision::QuadEdgeList> getVertexUniqueEdges(
bool includeFrame);
518 #endif //GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H An Envelope defines a rectangulare region of the 2D coordinate plane.
QuadEdge * locate(const geom::Coordinate &p)
Finds a quadedge of a triangle containing a location specified by a geom::Coordinate, if one exists.
std::array< QuadEdge *, 3 > startingEdges
An interface for algorithms which process the triangles in a QuadEdgeSubdivision. ...
Coordinate is the lightweight class used to store coordinates.
QuadEdge * locate(const Vertex &v) const
Finds a quadedge of a triangle containing a location specified by a Vertex, if one exists...
Models a site (node) in a QuadEdgeSubdivision.
std::unique_ptr< QuadEdgeLocator > locator
double edgeCoincidenceTolerance
std::vector< QuadEdge * > QuadEdgeList
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
std::deque< QuadEdgeQuartet > & getEdges()
Gets the collection of base QuadEdges (one for every pair of vertices which is connected).
const double EDGE_COINCIDENCE_TOL_FACTOR
std::deque< QuadEdgeQuartet > quadEdges
A class that contains the QuadEdges representing a planar subdivision that models a triangulation...
Basic namespace for all GEOS functionalities.
std::array< Vertex, 3 > frameVertex
void setLocator(std::unique_ptr< QuadEdgeLocator > p_locator)
Sets the QuadEdgeLocator to use for locating containing triangles in this subdivision.
double getTolerance() const
Gets the vertex-equality tolerance value used in this subdivision.
std::vector< std::unique_ptr< geom::CoordinateSequence > > TriList
A class that represents the edge data structure which implements the quadedge algebra.
std::stack< QuadEdge * > QuadEdgeStack
const geom::Envelope & getEnvelope() const
Gets the envelope of the Subdivision (including the frame).