93class GEOS_DLL RelateNG {
100 std::unique_ptr<MCIndexSegmentSetMutualIntersector> edgeMutualInt =
nullptr;
105 : boundaryNodeRule(bnRule)
106 , geomA(inputA, isPrepared, bnRule)
109 RelateNG(
const Geometry* inputA,
bool isPrepared)
113 bool hasRequiredEnvelopeInteraction(
const Geometry* b, TopologyPredicate& predicate);
115 bool finishValue(TopologyPredicate& predicate);
117 void computePP(RelateGeometry& geomB, TopologyComputer& topoComputer);
119 void computeAtPoints(RelateGeometry&
geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
121 bool computePoints(RelateGeometry&
geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
123 void computePoint(
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
125 bool computeLineEnds(RelateGeometry&
geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
140 bool computeLineEnd(RelateGeometry&
geom,
bool isA,
const CoordinateXY* pt, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
142 bool computeAreaVertex(RelateGeometry&
geom,
bool isA, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
144 bool computeAreaVertex(RelateGeometry&
geom,
bool isA,
const LinearRing* ring, RelateGeometry& geomTarget, TopologyComputer& topoComputer);
146 void computeAtEdges(RelateGeometry& geomB, TopologyComputer& topoComputer);
148 void computeEdgesAll(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);
150 void computeEdgesMutual(std::vector<const SegmentString*>& edgesB,
const Envelope* envInt, EdgeSegmentIntersector& intersector);