Class EdgeEnd

  • All Implemented Interfaces:
    Comparable
    Direct Known Subclasses:
    DirectedEdge, EdgeEndBundle

    public class EdgeEnd
    extends Object
    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.
    Version:
    1.7
    • Field Detail

      • edge

        protected Edge edge
      • label

        protected Label label
    • Method Detail

      • getEdge

        public Edge getEdge()
      • getLabel

        public Label getLabel()
      • getCoordinate

        public Coordinate getCoordinate()
      • getDirectedCoordinate

        public Coordinate getDirectedCoordinate()
      • getQuadrant

        public int getQuadrant()
      • getDx

        public double getDx()
      • getDy

        public double getDy()
      • setNode

        public void setNode​(Node node)
      • getNode

        public Node getNode()
      • compareDirection

        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.

        Parameters:
        e - EdgeEnd
        Returns:
        direction comparison
      • computeLabel

        public void computeLabel​(BoundaryNodeRule boundaryNodeRule)