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;
92 static void getTriangleEdges(
const QuadEdge &startQE,
96 QuadEdgeList quadEdges;
97 QuadEdgeList createdEdges;
100 double edgeCoincidenceTolerance;
103 std::auto_ptr<QuadEdgeLocator> locator;
123 virtual void initSubdiv(
QuadEdge* initEdges[3]);
162 inline void setLocator(std::auto_ptr<QuadEdgeLocator> locator) {
163 this->locator = locator;
226 return locator->locate(v);
239 return locator->locate(
Vertex(p));
279 bool isFrameEdge(
const QuadEdge &e)
const;
290 bool isFrameBorderEdge(
const QuadEdge &e)
const;
299 bool isFrameVertex(
const Vertex &v)
const;
334 std::auto_ptr<QuadEdgeList> getPrimaryEdges(
bool includeFrame);
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;
434 std::auto_ptr< std::vector<geom::Geometry*> > getVoronoiCellPolygons(
const geom::GeometryFactory& geomFact);
446 std::auto_ptr< std::vector<geom::Geometry*> > getVoronoiCellEdges(
const geom::GeometryFactory& geomFact);
464 std::auto_ptr<QuadEdgeSubdivision::QuadEdgeList> getVertexUniqueEdges(
bool includeFrame);
498 #endif //GEOS_TRIANGULATE_QUADEDGE_QUADEDGESUBDIVISION_H An Envelope defines a rectangulare region of the 2D coordinate plane.
Definition: Envelope.h:53
QuadEdge * locate(const geom::Coordinate &p)
Definition: QuadEdgeSubdivision.h:238
Definition: TriangleVisitor.h:34
QuadEdge * locate(const Vertex &v) const
Definition: QuadEdgeSubdivision.h:225
Coordinate is the lightweight class used to store coordinates.
Definition: Coordinate.h:60
void setLocator(std::auto_ptr< QuadEdgeLocator > locator)
Definition: QuadEdgeSubdivision.h:162
Supplies a set of utility methods for building Geometry objects from CoordinateSequence or other Geom...
Definition: GeometryFactory.h:67
const QuadEdgeList & getEdges() const
Definition: QuadEdgeSubdivision.h:151
Definition: QuadEdgeSubdivision.h:79
Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25
const geom::Envelope & getEnvelope() const
Definition: QuadEdgeSubdivision.h:141
Definition: QuadEdge.h:51
double getTolerance() const
Definition: QuadEdgeSubdivision.h:132