## com.vividsolutions.jts.planargraph
Class DirectedEdge

    java.lang.Object
      com.vividsolutions.jts.planargraph.GraphComponent
          com.vividsolutions.jts.planargraph.DirectedEdge

All Implemented Interfaces:
  java.lang.Comparable

Direct Known Subclasses:
  LineMergeDirectedEdge, PolygonizeDirectedEdge

public class DirectedEdge
extends GraphComponent
implements java.lang.Comparable

Represents a directed edge in a `PlanarGraph`. A DirectedEdge may or may not have a reference to a parent `Edge` (some applications of planar graphs may not require explicit Edge objects to be created). Usually a client using a `PlanarGraph` will subclass `DirectedEdge` to add its own application-specific data and methods.

Version:
  1.7

Field Summary
`protected double` `angle`
`protected static CGAlgorithms` `cga`
`protected boolean` `edgeDirection`
`protected Node` `from`
`protected Coordinate` `p0`
`protected Coordinate` `p1`
`protected Edge` `parentEdge`
`protected int` `quadrant`
`protected DirectedEdge` `sym`
`protected Node` `to`

Fields inherited from class com.vividsolutions.jts.planargraph.GraphComponent
`isMarked, isVisited`

Constructor Summary
`DirectedEdge(Node from, Node to, Coordinate directionPt, boolean edgeDirection)` Constructs a DirectedEdge connecting the `from` node to the `to` node.

Method Summary
`int` `compareDirection(DirectedEdge e)` Returns 1 if this DirectedEdge has a greater angle with the positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
`int` `compareTo(java.lang.Object obj)` Returns 1 if this DirectedEdge has a greater angle with the positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.
`double` `getAngle()` Returns the angle that the start of this DirectedEdge makes with the positive x-axis, in radians.
`Coordinate` `getCoordinate()` Returns the coordinate of the from-node.
`Coordinate` `getDirectionPt()` Returns a point to which an imaginary line is drawn from the from-node to specify this DirectedEdge's orientation.
`Edge` `getEdge()` Returns this DirectedEdge's parent Edge, or null if it has none.
`boolean` `getEdgeDirection()` Returns whether the direction of the parent Edge (if any) is the same as that of this Directed Edge.
`Node` `getFromNode()` Returns the node from which this DirectedEdge leaves.
`int` `getQuadrant()` Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.
`DirectedEdge` `getSym()` Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge.
`Node` `getToNode()` Returns the node to which this DirectedEdge goes.
`boolean` `isRemoved()` Tests whether this directed edge has been removed from its containing graph
`void` `print(java.io.PrintStream out)` Prints a detailed string representation of this DirectedEdge to the given PrintStream.
`void` `setEdge(Edge parentEdge)` Associates this DirectedEdge with an Edge (possibly null, indicating no associated Edge).
`void` `setSym(DirectedEdge sym)` Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite direction.
`static java.util.List` `toEdges(java.util.Collection dirEdges)` Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges.

Methods inherited from class com.vividsolutions.jts.planargraph.GraphComponent
`getComponentWithVisitedState, getContext, getData, isMarked, isVisited, setContext, setData, setMarked, setMarked, setVisited, setVisited`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### cga

    protected static final CGAlgorithms cga

### parentEdge

    protected Edge parentEdge

### from

    protected Node from

### to

    protected Node to

### p0

    protected Coordinate p0

### p1

    protected Coordinate p1

### sym

    protected DirectedEdge sym

### edgeDirection

    protected boolean edgeDirection

### quadrant

    protected int quadrant

### angle

    protected double angle

Constructor Detail

### DirectedEdge

    public DirectedEdge(Node from,
                        Node to,
                        Coordinate directionPt,
                        boolean edgeDirection)

  Constructs a DirectedEdge connecting the `from` node to the `to` node.

Parameters:
  `directionPt` - specifies this DirectedEdge's direction vector (determined by the vector from the `from` node to `directionPt`)
  `edgeDirection` - whether this DirectedEdge's direction is the same as or opposite to that of the parent Edge (if any)

Method Detail

### toEdges

    public static java.util.List toEdges(java.util.Collection dirEdges)

  Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges.

### getEdge

    public Edge getEdge()

  Returns this DirectedEdge's parent Edge, or null if it has none.

### setEdge

    public void setEdge(Edge parentEdge)

  Associates this DirectedEdge with an Edge (possibly null, indicating no associated Edge).

### getQuadrant

    public int getQuadrant()

  Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.

### getDirectionPt

    public Coordinate getDirectionPt()

  Returns a point to which an imaginary line is drawn from the from-node to specify this DirectedEdge's orientation.

### getEdgeDirection

    public boolean getEdgeDirection()

  Returns whether the direction of the parent Edge (if any) is the same as that of this Directed Edge.

### getFromNode

    public Node getFromNode()

  Returns the node from which this DirectedEdge leaves.

### getToNode

    public Node getToNode()

  Returns the node to which this DirectedEdge goes.

### getCoordinate

    public Coordinate getCoordinate()

  Returns the coordinate of the from-node.

### getAngle

    public double getAngle()

  Returns the angle that the start of this DirectedEdge makes with the positive x-axis, in radians.

### getSym

    public DirectedEdge getSym()

  Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge.

### setSym

    public void setSym(DirectedEdge sym)

  Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite direction.

### isRemoved

    public boolean isRemoved()

  Tests whether this directed edge has been removed from its containing graph

  Specified by:
    `isRemoved` in class `GraphComponent`
  Returns:
    `true` if this directed edge is removed

### compareTo

    public int compareTo(java.lang.Object obj)

  Returns 1 if this DirectedEdge has a greater angle with the positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.

  Using the obvious algorithm of simply computing the angle is not robust, since the angle calculation is susceptible to roundoff. A robust algorithm is:

  - first compare the quadrants. If the quadrants are different, it it trivial to determine which vector is "greater".
  - if the vectors lie in the same quadrant, the robust `CGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate)` function can be used to decide the relative orientation of the vectors.

  Specified by:
    `compareTo` in interface `java.lang.Comparable`

### compareDirection

    public int compareDirection(DirectedEdge e)

  Returns 1 if this DirectedEdge has a greater angle with the positive x-axis than b", 0 if the DirectedEdges are collinear, and -1 otherwise.

  Using the obvious algorithm of simply computing the angle is not robust, since the angle calculation is susceptible to roundoff. A robust algorithm is:

  - first compare the quadrants. If the quadrants are different, it it trivial to determine which vector is "greater".
  - if the vectors lie in the same quadrant, the robust `CGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate)` function can be used to decide the relative orientation of the vectors.

### print

    public void print(java.io.PrintStream out)

  Prints a detailed string representation of this DirectedEdge to the given PrintStream.