com.vividsolutions.jts.planargraph

Class DirectedEdge

Implemented Interfaces:
Comparable
Known Direct Subclasses:
LineMergeDirectedEdge, PolygonizeDirectedEdge

public class DirectedEdge
extends GraphComponent
implements 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.6

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(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.
void
print(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 List
toEdges(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

isMarked, isVisited, setMarked, setVisited

Field Details

angle

protected double angle

cga

protected static final CGAlgorithms cga

edgeDirection

protected boolean edgeDirection

from

protected Node from

p0

protected Coordinate p0

p1

protected Coordinate p1

parentEdge

protected Edge parentEdge

quadrant

protected int quadrant

sym

protected DirectedEdge sym

to

protected Node to

Constructor Details

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 (given by an imaginary line 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 Details

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 RobustCGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate) function can be used to decide the relative orientation of the vectors.

compareTo

public int compareTo(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 RobustCGAlgorithms.computeOrientation(Coordinate, Coordinate, Coordinate) function can be used to decide the relative orientation of the vectors.

getAngle

public double getAngle()
Returns the angle that the start of this DirectedEdge makes with the positive x-axis, in radians.

getCoordinate

public Coordinate getCoordinate()
Returns the coordinate of the from-node.

getDirectionPt

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

getEdge

public Edge getEdge()
Returns this DirectedEdge's parent Edge, or null if it has none.

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.

getQuadrant

public int getQuadrant()
Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.

getSym

public DirectedEdge getSym()
Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge.

getToNode

public Node getToNode()
Returns the node to which this DirectedEdge goes.

print

public void print(PrintStream out)
Prints a detailed string representation of this DirectedEdge to the given PrintStream.

setEdge

public void setEdge(Edge parentEdge)
Associates this DirectedEdge with an Edge (possibly null, indicating no associated Edge).

setSym

public void setSym(DirectedEdge sym)
Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite direction.

toEdges

public static List toEdges(Collection dirEdges)
Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges.