19 #ifndef GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H
20 #define GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H
28 #include <geos/geom/MultiLineString.h>
29 #include <geos/triangulate/quadedge/QuadEdgeLocator.h>
30 #include <geos/triangulate/quadedge/Vertex.h>
36 class CoordinateSequence;
37 class GeometryCollection;
38 class MultiLineString;
39 class GeometryFactory;
45 namespace triangulate {
49 class TriangleVisitor;
51 const double EDGE_COINCIDENCE_TOL_FACTOR = 1000;
81 typedef std::vector<QuadEdge*> QuadEdgeList;
96 QuadEdgeList quadEdges;
97 QuadEdgeList createdEdges;
100 double edgeCoincidenceTolerance;
103 std::unique_ptr<QuadEdgeLocator> locator;
123 virtual void initSubdiv(
QuadEdge* initEdges[3]);
162 inline void setLocator(std::unique_ptr<QuadEdgeLocator> locator) {
163 this->locator = std::move(locator);
226 return locator->locate(v);
239 return locator->locate(
Vertex(p));
343 typedef std::stack<QuadEdge*> QuadEdgeStack;
344 typedef std::set<QuadEdge*> QuadEdgeSet;
345 typedef std::list< geom::CoordinateSequence*> TriList;
365 QuadEdge** fetchTriangleToVisit(
QuadEdge *edge, QuadEdgeStack &edgeStack,
bool includeFrame,
366 QuadEdgeSet &visitedEdges);
375 void getTriangleCoordinates(TriList* triList,
bool includeFrame);
378 class TriangleCoordinatesVisitor;
379 class TriangleCircumcentreVisitor;
498 #endif //GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H
bool isFrameVertex(const Vertex &v) const
std::unique_ptr< geom::MultiLineString > getEdges(const geom::GeometryFactory &geomFact)
Definition: QuadEdge.h:51
const geom::Envelope & getEnvelope() const
Definition: QuadEdgeSubdivision.h:141
Definition: QuadEdgeSubdivision.h:79
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
const QuadEdgeList & getEdges() const
Definition: QuadEdgeSubdivision.h:151
std::unique_ptr< QuadEdgeList > getPrimaryEdges(bool includeFrame)
std::unique_ptr< geom::Geometry > getVoronoiCellPolygon(QuadEdge *qe, const geom::GeometryFactory &geomFact)
QuadEdge * locate(const geom::Coordinate &p)
Definition: QuadEdgeSubdivision.h:238
bool isFrameEdge(const QuadEdge &e) const
std::unique_ptr< geom::MultiLineString > getVoronoiDiagramEdges(const geom::GeometryFactory &geomFact)
virtual QuadEdge & connect(QuadEdge &a, QuadEdge &b)
Definition: TriangleVisitor.h:34
void setLocator(std::unique_ptr< QuadEdgeLocator > locator)
Definition: QuadEdgeSubdivision.h:162
QuadEdge * locateFromEdge(const Vertex &v, const QuadEdge &startEdge) const
std::unique_ptr< geom::GeometryCollection > getTriangles(const geom::GeometryFactory &geomFact)
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
QuadEdge * locate(const Vertex &v) const
Definition: QuadEdgeSubdivision.h:225
bool isFrameBorderEdge(const QuadEdge &e) const
std::unique_ptr< QuadEdgeSubdivision::QuadEdgeList > getVertexUniqueEdges(bool includeFrame)
std::unique_ptr< std::vector< geom::Geometry * > > getVoronoiCellEdges(const geom::GeometryFactory &geomFact)
std::unique_ptr< geom::Geometry > getVoronoiCellEdge(QuadEdge *qe, const geom::GeometryFactory &geomFact)
bool isVertexOfEdge(const QuadEdge &e, const Vertex &v) const
QuadEdge * locate(const geom::Coordinate &p0, const geom::Coordinate &p1)
An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:59
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:67
double getTolerance() const
Definition: QuadEdgeSubdivision.h:132
QuadEdgeSubdivision(const geom::Envelope &env, double tolerance)
QuadEdge & insertSite(const Vertex &v)
virtual QuadEdge & makeEdge(const Vertex &o, const Vertex &d)
bool isOnEdge(const QuadEdge &e, const geom::Coordinate &p) const
static void getTriangleEdges(const QuadEdge &startQE, const QuadEdge *triEdge[3])
std::unique_ptr< std::vector< geom::Geometry * > > getVoronoiCellPolygons(const geom::GeometryFactory &geomFact)
std::unique_ptr< geom::GeometryCollection > getVoronoiDiagram(const geom::GeometryFactory &geomFact)