Class DirectedEdge
- Namespace
- NetTopologySuite.Planargraph
- Assembly
- NetTopologySuite.dll
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.
public class DirectedEdge : GraphComponent, IComparable
- Inheritance
-
DirectedEdge
- Implements
- Derived
- Inherited Members
Constructors
DirectedEdge(Node, Node, Coordinate, bool)
Constructs a DirectedEdge connecting the from
node to the
to
node.
public DirectedEdge(Node from, Node to, Coordinate directionPt, bool edgeDirection)
Parameters
from
Nodeto
NodedirectionPt
CoordinateSpecifies this DirectedEdge's direction (given by an imaginary line from the
from
node todirectionPt
).edgeDirection
boolWhether this DirectedEdge's direction is the same as or opposite to that of the parent Edge (if any).
Fields
from
protected Node from
Field Value
p0
protected Coordinate p0
Field Value
p1
protected Coordinate p1
Field Value
parentEdge
protected Edge parentEdge
Field Value
to
protected Node to
Field Value
Properties
Angle
Returns the angle that the start of this DirectedEdge makes with the positive x-axis, in radians.
public double Angle { get; }
Property Value
Coordinate
Returns the coordinate of the from-node.
public Coordinate Coordinate { get; }
Property Value
DirectionPt
Returns a point to which an imaginary line is drawn from the from-node to specify this DirectedEdge's orientation.
public Coordinate DirectionPt { get; }
Property Value
Edge
Returns this DirectedEdge's parent Edge, or null if it has none. Associates this DirectedEdge with an Edge (possibly null, indicating no associated Edge).
public Edge Edge { get; set; }
Property Value
EdgeDirection
Returns whether the direction of the parent Edge (if any) is the same as that of this Directed Edge.
public bool EdgeDirection { get; protected set; }
Property Value
FromNode
Returns the node from which this DirectedEdge leaves.
public Node FromNode { get; }
Property Value
IsRemoved
Tests whether this component has been removed from its containing graph.
public override bool IsRemoved { get; }
Property Value
Quadrant
Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.
[Obsolete("Use QuadrantValue")]
public int Quadrant { get; }
Property Value
QuadrantEx
Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.
public Quadrant QuadrantEx { get; }
Property Value
Sym
Returns the symmetric DirectedEdge -- the other DirectedEdge associated with this DirectedEdge's parent Edge. Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite direction.
public DirectedEdge Sym { get; set; }
Property Value
ToNode
Returns the node to which this DirectedEdge goes.
public Node ToNode { get; }
Property Value
Methods
CompareDirection(DirectedEdge)
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 round off. 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.
public int CompareDirection(DirectedEdge e)
Parameters
Returns
CompareTo(object)
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 round off. 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.
public int CompareTo(object obj)
Parameters
obj
object
Returns
ToEdges(IList<DirectedEdge>)
Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges.
public static IList<Edge> ToEdges(IList<DirectedEdge> dirEdges)
Parameters
dirEdges
IList<DirectedEdge>
Returns
ToString()
public override string ToString()
Returns
Write(StreamWriter)
Writes a detailed string representation of this DirectedEdge to the given PrintStream.
public void Write(StreamWriter outstream)
Parameters
outstream
StreamWriter