22 #ifndef GEOS_GEOMGRAPH_EDGE_H 23 #define GEOS_GEOMGRAPH_EDGE_H 39 #pragma warning(disable: 4251) // warning C4251: needs to have dll-interface to be used by clients of class 45 class IntersectionMatrix;
49 class LineIntersector;
67 using GraphComponent::updateIM;
72 std::unique_ptr<index::MonotoneChainEdge>
mce;
88 assert(pts->size() > 1);
91 friend std::ostream&
operator<< (std::ostream& os,
const Edge& el);
96 std::unique_ptr<geom::CoordinateSequence>
pts;
111 return pts->getSize();
125 return pts->getAt(i);
132 return pts->getAt(0);
158 depthDelta = newDepthDelta;
166 return getNumPoints() - 1;
186 return pts->getAt(0) == pts->getAt(getNumPoints() - 1);
193 virtual bool isCollapsed()
const;
195 virtual Edge* getCollapsedEdge();
200 isIsolatedVar = newIsIsolated;
208 return isIsolatedVar;
224 size_t geomIndex,
size_t intIndex);
239 virtual bool isPointwiseEqual(
const Edge* e)
const;
241 virtual std::string print()
const;
243 virtual std::string printReverse()
const;
252 virtual bool equals(
const Edge& e)
const;
286 #endif // ifndef GEOS_GEOMGRAPH_EDGE_H virtual Depth & getDepth()
virtual bool equals(const Edge *e) const
virtual int getDepthDelta() const
The depthDelta is the change in depth as an edge is crossed from R to L.
MonotoneChains are a way of partitioning the segments of an edge to allow for fast searching of inter...
An Envelope defines a rectangulare region of the 2D coordinate plane.
virtual size_t getNumPoints() const
std::unique_ptr< geom::CoordinateSequence > pts
Externally-set, owned by Edge. FIXME: refuse ownership.
virtual const geom::Coordinate & getCoordinate(size_t i) const
Coordinate is the lightweight class used to store coordinates.
virtual void setDepthDelta(int newDepthDelta)
virtual void setIsolated(bool newIsIsolated)
Implementation of Dimensionally Extended Nine-Intersection Model (DE-9IM) matrix. ...
virtual EdgeIntersectionList & getEdgeIntersectionList()
virtual bool equals(const Edge &e) const
A list of edge intersections along an Edge.
std::unique_ptr< index::MonotoneChainEdge > mce
Lazily-created, owned by Edge.
A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...
virtual const geom::Coordinate & getCoordinate() const
virtual size_t getMaximumSegmentIndex() const
std::ostream & operator<<(std::ostream &os, const Coordinate &c)
Output function.
EdgeIntersectionList eiList
A Label indicates the topological relationship of a component of a topology graph to a given Geometry...
Basic namespace for all GEOS functionalities.
void computeIM(geom::IntersectionMatrix &im) override
Update the IM with the contribution for this component.
bool isIsolated() const override
The internal representation of a list of coordinates inside a Geometry.
A Depth object records the topological depth of the sides of an Edge for up to two Geometries...
A GraphComponent is the parent class for the objects' that form a graph.
void testInvariant() const
bool operator==(const Coordinate &a, const Coordinate &b)
Equality operator for Coordinate. 2D only.
virtual const geom::CoordinateSequence * getCoordinates() const
virtual bool isClosed() const