Package org.locationtech.jts.planargraph
Class DirectedEdge
java.lang.Object
org.locationtech.jts.planargraph.GraphComponent
org.locationtech.jts.planargraph.DirectedEdge
- All Implemented Interfaces:
Comparable
- Direct Known Subclasses:
LineMergeDirectedEdge
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
-
Constructor Summary
ConstructorsConstructorDescriptionDirectedEdge
(Node from, Node to, Coordinate directionPt, boolean edgeDirection) Constructs a DirectedEdge connecting thefrom
node to theto
node. -
Method Summary
Modifier and TypeMethodDescriptionint
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
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.Returns the coordinate of the from-node.Returns a point to which an imaginary line is drawn from the from-node to specify this DirectedEdge's orientation.getEdge()
Returns this DirectedEdge's parent Edge, or null if it has none.boolean
Returns whether the direction of the parent Edge (if any) is the same as that of this Directed Edge.Returns the node from which this DirectedEdge leaves.int
Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.getSym()
Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge.Returns the node to which this DirectedEdge goes.boolean
Tests whether this directed edge has been removed from its containing graphvoid
print
(PrintStream out) Prints a detailed string representation of this DirectedEdge to the given PrintStream.void
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 org.locationtech.jts.planargraph.GraphComponent
getComponentWithVisitedState, getContext, getData, isMarked, isVisited, setContext, setData, setMarked, setMarked, setVisited, setVisited
-
Constructor Details
-
DirectedEdge
Constructs a DirectedEdge connecting thefrom
node to theto
node.- Parameters:
directionPt
- specifies this DirectedEdge's direction vector (determined by the vector from thefrom
node todirectionPt
)edgeDirection
- whether this DirectedEdge's direction is the same as or opposite to that of the parent Edge (if any)
-
-
Method Details
-
toEdges
Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges. -
getEdge
Returns this DirectedEdge's parent Edge, or null if it has none. -
setEdge
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
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
Returns the node from which this DirectedEdge leaves. -
getToNode
Returns the node to which this DirectedEdge goes. -
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
Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge. -
setSym
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 classGraphComponent
- Returns:
true
if this directed edge is removed
-
compareTo
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
Orientation.index(Coordinate, Coordinate, Coordinate)
function can be used to decide the relative orientation of the vectors.
- Specified by:
compareTo
in interfaceComparable
-
compareDirection
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
Orientation.index(Coordinate, Coordinate, Coordinate)
function can be used to decide the relative orientation of the vectors.
-
print
Prints a detailed string representation of this DirectedEdge to the given PrintStream.
-