Class EdgeEnd

Hierarchy: Object , EdgeEnd
All Implemented Interfaces: Comparable
Direct Known Subclasses: DirectedEdge, EdgeEndBundle
public class EdgeEnd
implements Comparable
Models the end of an edge incident on a node. 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.

Other

  • version: 1.7
protected EdgeEnd(Edge edge)
public EdgeEnd(Edge edge, Coordinate p0, Coordinate p1)
public EdgeEnd(Edge edge, Coordinate p0, Coordinate p1, Label label)
protected void init(Coordinate p0, Coordinate p1)
public Edge getEdge()
public Label getLabel()
public Coordinate getCoordinate()
public Coordinate getDirectedCoordinate()
public int getQuadrant()
public double getDx()
public double getDy()
public void setNode(Node node)
public Node getNode()
public int compareTo(Object obj)
public int compareDirection(EdgeEnd e)
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: - first compare the quadrant. If the quadrants are different, it it trivial to determine which vector is "greater". - if the vectors lie in the same quadrant, the computeOrientation function can be used to decide the relative orientation of the vectors.

public void computeLabel(BoundaryNodeRule boundaryNodeRule)
public void print(PrintStream out)
public String toString()