#include <EdgeEnd.h>

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 () |
| 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.
| geos::geomgraph::EdgeEnd::EdgeEnd | ( | Edge * | newEdge, | |
| const geom::Coordinate & | newP0, | |||
| const geom::Coordinate & | newP1, | |||
| Label * | newLabel = NULL | |||
| ) |
| virtual int geos::geomgraph::EdgeEnd::compareDirection | ( | const EdgeEnd * | e | ) | const [virtual] |
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:
1.5.4