Table of Contents

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 Node
to Node
directionPt Coordinate

Specifies this DirectedEdge's direction (given by an imaginary line from the from node to directionPt).

edgeDirection bool

Whether 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

Node

p0

protected Coordinate p0

Field Value

Coordinate

p1

protected Coordinate p1

Field Value

Coordinate

parentEdge

protected Edge parentEdge

Field Value

Edge

to

protected Node to

Field Value

Node

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

double

Coordinate

Returns the coordinate of the from-node.

public Coordinate Coordinate { get; }

Property Value

Coordinate

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

Coordinate

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

Edge

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

bool

FromNode

Returns the node from which this DirectedEdge leaves.

public Node FromNode { get; }

Property Value

Node

IsRemoved

Tests whether this component has been removed from its containing graph.

public override bool IsRemoved { get; }

Property Value

bool

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

int

QuadrantEx

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

public Quadrant QuadrantEx { get; }

Property Value

Quadrant

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

DirectedEdge

ToNode

Returns the node to which this DirectedEdge goes.

public Node ToNode { get; }

Property Value

Node

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

e DirectedEdge

Returns

int

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

int

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

IList<Edge>

ToString()

public override string ToString()

Returns

string

Write(StreamWriter)

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

public void Write(StreamWriter outstream)

Parameters

outstream StreamWriter