21 #include <geos/export.h>
22 #include <geos/geom/CoordinateSequence.h>
23 #include <geos/geom/Envelope.h>
24 #include <geos/geom/LineSegment.h>
32 class CoordinateSequence;
99 std::size_t start, std::size_t end,
void* context);
105 const geom::Envelope& getEnvelope(
double expansionDistance)
const;
108 getStartIndex()
const
124 pts->getAt(index, ls.p0);
125 pts->getAt(index + 1, ls.
p1);
145 void computeOverlaps(
const MonotoneChain* mc,
double overlapTolerance,
161 void computeOverlaps(std::size_t start0, std::size_t end0,
const MonotoneChain& mc,
162 std::size_t start1, std::size_t end1,
163 double overlapTolerance,
166 bool overlaps(std::size_t start0, std::size_t end0,
167 const MonotoneChain& mc, std::size_t start1, std::size_t end1,
168 double overlapTolerance)
const {
169 if (overlapTolerance > 0.0) {
170 return overlaps(pts->getAt<geom::CoordinateXY>(start0),
171 pts->getAt<geom::CoordinateXY>(end0),
172 mc.pts->
getAt<geom::CoordinateXY>(start1),
173 mc.pts->
getAt<geom::CoordinateXY>(end1),
177 pts->getAt<geom::CoordinateXY>(end0),
178 mc.pts->
getAt<geom::CoordinateXY>(start1),
179 mc.pts->
getAt<geom::CoordinateXY>(end1));
182 static bool overlaps(
const geom::CoordinateXY& p1,
const geom::CoordinateXY& p2,
183 const geom::CoordinateXY& q1,
const geom::CoordinateXY& q2,
184 double overlapTolerance);