GEOS 3.11.1
Public Member Functions | List of all members
geos::noding::snapround::SnapRoundingIntersectionAdder Class Reference

#include <SnapRoundingIntersectionAdder.h>

Inheritance diagram for geos::noding::snapround::SnapRoundingIntersectionAdder:
geos::noding::SegmentIntersector

Public Member Functions

 SnapRoundingIntersectionAdder (double p_nearnessTol)
 
std::unique_ptr< std::vector< geom::Coordinate > > getIntersections ()
 
void processIntersections (SegmentString *e0, std::size_t segIndex0, SegmentString *e1, std::size_t segIndex1) override
 
bool isDone () const override
 
virtual void processIntersections (SegmentString *e0, std::size_t segIndex0, SegmentString *e1, std::size_t segIndex1)=0
 
virtual bool isDone () const
 Reports whether the client of this class needs to continue testing all intersections in an arrangement. More...
 

Detailed Description

Finds intersections between line segments which will be snap-rounded, and adds them as nodes to the segments.

Intersections are detected and computed using full precision. Snapping takes place in a subsequent phase.

The intersection points are recorded, so that HotPixels can be created for them.

To avoid robustness issues with vertices which lie very close to line segments a heuristic is used: nodes are created if a vertex lies within a tolerance distance of the interior of a segment. The tolerance distance is chosen to be significantly below the snap-rounding grid size. This has empirically proven to eliminate noding failures.

Member Function Documentation

◆ isDone()

bool geos::noding::snapround::SnapRoundingIntersectionAdder::isDone ( ) const
inlineoverridevirtual

Always process all intersections

Reimplemented from geos::noding::SegmentIntersector.

◆ processIntersections()

void geos::noding::snapround::SnapRoundingIntersectionAdder::processIntersections ( SegmentString e0,
std::size_t  segIndex0,
SegmentString e1,
std::size_t  segIndex1 
)
overridevirtual

This method is called by clients of the SegmentIntersector class to process intersections for two segments of the SegmentStrings being intersected. Note that some clients (such as MonotoneChains) may optimize away this call for segment pairs which they have determined do not intersect (e.g. by an disjoint envelope test).

Implements geos::noding::SegmentIntersector.


The documentation for this class was generated from the following file: