GEOS
3.9.1dev
|
Finds all intersections in one or two sets of edges, using an x-axis sweepline algorithm in conjunction with Monotone Chains. More...
#include <SimpleMCSweepLineIntersector.h>
Public Member Functions | |
SimpleMCSweepLineIntersector ()=default | |
~SimpleMCSweepLineIntersector () override=default | |
void | computeIntersections (std::vector< Edge * > *edges, SegmentIntersector *si, bool testAllSegments) override |
Computes all self-intersections between edges in a set of edges, allowing client to choose whether self-intersections are computed. More... | |
void | computeIntersections (std::vector< Edge * > *edges0, std::vector< Edge * > *edges1, SegmentIntersector *si) override |
Computes all mutual intersections between two sets of edges. More... | |
Public Member Functions inherited from geos::geomgraph::index::EdgeSetIntersector | |
virtual | ~EdgeSetIntersector () |
Protected Attributes | |
std::vector< SweepLineEvent * > | events |
std::deque< SweepLineEvent > | eventStore |
std::deque< MonotoneChain > | chains |
int | nOverlaps |
Private Member Functions | |
void | add (std::vector< Edge * > *edges) |
void | add (std::vector< Edge * > *edges, void *edgeSet) |
void | add (Edge *edge, void *edgeSet) |
void | prepareEvents () |
void | computeIntersections (SegmentIntersector *si) |
void | processOverlaps (size_t start, size_t end, SweepLineEvent *ev0, SegmentIntersector *si) |
SimpleMCSweepLineIntersector (const SimpleMCSweepLineIntersector &other)=delete | |
SimpleMCSweepLineIntersector & | operator= (const SimpleMCSweepLineIntersector &rhs)=delete |
Finds all intersections in one or two sets of edges, using an x-axis sweepline algorithm in conjunction with Monotone Chains.
While still O(n^2) in the worst case, this algorithm drastically improves the average-case time. The use of MonotoneChains as the items in the index seems to offer an improvement in performance over a sweep-line alone.
Definition at line 53 of file SimpleMCSweepLineIntersector.h.
|
default |
|
overridedefault |
|
privatedelete |
|
private |
|
private |
|
private |
|
overridevirtual |
Computes all self-intersections between edges in a set of edges, allowing client to choose whether self-intersections are computed.
edges | a list of edges to test for intersections |
si | the SegmentIntersector to use |
testAllSegments | true if self-intersections are to be tested as well |
Implements geos::geomgraph::index::EdgeSetIntersector.
|
overridevirtual |
Computes all mutual intersections between two sets of edges.
Implements geos::geomgraph::index::EdgeSetIntersector.
|
private |
|
privatedelete |
|
private |
|
private |
|
protected |
Definition at line 78 of file SimpleMCSweepLineIntersector.h.
|
protected |
Definition at line 76 of file SimpleMCSweepLineIntersector.h.
|
protected |
Definition at line 77 of file SimpleMCSweepLineIntersector.h.
|
protected |
Definition at line 81 of file SimpleMCSweepLineIntersector.h.