#include <EdgeEnd.h>
Inheritance diagram for geos::geomgraph::EdgeEnd:
Public Member Functions | |
EdgeEnd (Edge *newEdge, const geom::Coordinate &newP0, const geom::Coordinate &newP1, Label *newLabel=NULL) | |
Edge * | getEdge () |
virtual Label * | getLabel () |
virtual geom::Coordinate & | getCoordinate () |
virtual geom::Coordinate & | getDirectedCoordinate () |
virtual int | getQuadrant () |
virtual double | getDx () |
virtual double | getDy () |
virtual void | setNode (Node *newNode) |
virtual Node * | getNode () |
virtual int | compareTo (const EdgeEnd *e) const |
virtual int | compareDirection (const EdgeEnd *e) const |
virtual void | computeLabel (const algorithm::BoundaryNodeRule &bnr) |
virtual std::string | print () |
Protected Member Functions | |
EdgeEnd (Edge *newEdge) | |
virtual void | init (const geom::Coordinate &newP0, const geom::Coordinate &newP1) |
Protected Attributes | |
Edge * | edge |
Label * | label |
Friends | |
std::ostream & | operator<< (std::ostream &, const EdgeEnd &) |
EdgeEnds have a direction determined by the direction of the ray from the initial point to the next point. EdgeEnds are comparable under the ordering "a has a greater angle with the x-axis than b". This ordering is used to sort EdgeEnds around a node.
|
NOTES: |
|
Implements the total order relation: a has a greater angle with the positive x-axis than b Using the obvious algorithm of simply computing the angle is not robust, since the angle calculation is obviously susceptible to roundoff. A robust algorithm is:
|