16 #ifndef GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H 17 #define GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H 19 #include <geos/export.h> 23 #include <geos/geom/Coordinate.h> 27 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class 33 class LineIntersector;
46 class GEOS_DLL SegmentIntersector {
54 bool hasIntersectionVar;
58 bool hasProperInterior;
62 bool isDoneWhenProperInt;
65 geom::Coordinate properIntersectionPoint;
67 algorithm::LineIntersector* li;
80 std::array<std::vector<Node*>*, 2> bdyNodes;
82 bool isTrivialIntersection(Edge* e0,
size_t segIndex0, Edge* e1,
size_t segIndex1);
84 bool isBoundaryPoint(algorithm::LineIntersector* li,
85 std::array<std::vector<Node*>*, 2>& tstBdyNodes);
87 bool isBoundaryPoint(algorithm::LineIntersector* li,
88 std::vector<Node*>* tstBdyNodes);
92 static bool isAdjacentSegments(
size_t i1,
size_t i2);
100 ~SegmentIntersector() {}
102 SegmentIntersector(algorithm::LineIntersector* newLi,
103 bool newIncludeProper,
bool newRecordIsolated)
105 hasIntersectionVar(false),
107 hasProperInterior(false),
109 isDoneWhenProperInt(false),
111 includeProper(newIncludeProper),
112 recordIsolated(newRecordIsolated),
114 bdyNodes{
nullptr,
nullptr},
121 void setBoundaryNodes(std::vector<Node*>* bdyNodes0,
122 std::vector<Node*>* bdyNodes1);
124 geom::Coordinate& getProperIntersectionPoint();
126 bool hasIntersection();
128 bool hasProperIntersection();
130 bool hasProperInteriorIntersection();
132 void addIntersections(Edge* e0,
size_t segIndex0, Edge* e1,
size_t segIndex1);
134 void setIsDoneIfProperInt(
bool isDoneWhenProperInt);
145 #include <geos/geomgraph/index/SegmentIntersector.inl> Basic namespace for all GEOS functionalities.
Definition: IndexedNestedRingTester.h:25