16#ifndef GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H
17#define GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H
19#include <geos/export.h>
22#include <geos/geom/Coordinate.h>
26#pragma warning(disable: 4251)
45class GEOS_DLL SegmentIntersector{
53 bool hasIntersectionVar;
57 bool hasProperInterior;
61 bool isDoneWhenProperInt;
64 geom::Coordinate properIntersectionPoint;
66 algorithm::LineIntersector *li;
79 std::vector<std::vector<Node*>*> bdyNodes;
81 bool isTrivialIntersection(Edge *e0,
int segIndex0,Edge *e1,
int segIndex1);
83 bool isBoundaryPoint(algorithm::LineIntersector *li,
84 std::vector<std::vector<Node*>*>& tstBdyNodes);
86 bool isBoundaryPoint(algorithm::LineIntersector *li,
87 std::vector<Node*> *tstBdyNodes);
91 static bool isAdjacentSegments(
int i1,
int i2);
98 virtual ~SegmentIntersector() {}
100 SegmentIntersector(algorithm::LineIntersector *newLi,
101 bool newIncludeProper,
bool newRecordIsolated)
103 hasIntersectionVar(false),
105 hasProperInterior(false),
107 isDoneWhenProperInt(false),
109 includeProper(newIncludeProper),
110 recordIsolated(newRecordIsolated),
119 void setBoundaryNodes(std::vector<Node*> *bdyNodes0,
120 std::vector<Node*> *bdyNodes1);
122 geom::Coordinate& getProperIntersectionPoint();
124 bool hasIntersection();
126 bool hasProperIntersection();
128 bool hasProperInteriorIntersection();
130 void addIntersections(Edge *e0,
int segIndex0, Edge *e1,
int segIndex1);
132 void setIsDoneIfProperInt(
bool isDoneWhenProperInt);
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
Definition LineIntersector.h:49
Definition geomgraph/Edge.h:66
Definition geomgraph/Node.h:62
Contains classes and interfaces implementing fundamental computational geometry algorithms.
Definition Angle.h:33
Contains classes that implement topology graphs.
Definition IndexedNestedRingTester.h:34
Basic namespace for all GEOS functionalities.
Definition IndexedNestedRingTester.h:25