com.vividsolutions.jts.planargraph
Class DirectedEdge
- Comparable
public class DirectedEdge
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.
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.
|
boolean | isRemoved() - Tests whether this directed edge has been removed from its containing graph
|
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.
|
getComponentWithVisitedState , getContext , getData , isMarked , isRemoved , isVisited , setContext , setData , setMarked , setMarked , setVisited , setVisited |
angle
protected double angle
edgeDirection
protected boolean edgeDirection
parentEdge
protected Edge parentEdge
quadrant
protected int quadrant
DirectedEdge
public DirectedEdge(Node from,
Node to,
Coordinate directionPt,
boolean edgeDirection)
Constructs a DirectedEdge connecting the from
node to the
to
node.
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)
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.
isRemoved
public boolean isRemoved()
Tests whether this directed edge has been removed from its containing graph
- isRemoved in interface GraphComponent
true
if this directed edge is removed
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.