#include <DirectedEdge.h>
Inheritance diagram for geos::planargraph::DirectedEdge:
Public Types  
typedef std::list< DirectedEdge * >  NonConstList 
typedef std::list< const DirectedEdge * >  ConstList 
typedef std::vector< DirectedEdge * >  NonConstVect 
typedef std::vector< const DirectedEdge * >  ConstVect 
typedef std::vector< DirectedEdge * >  Vect 
Public Member Functions  
DirectedEdge (Node *newFrom, Node *newTo, const geom::Coordinate &directionPt, bool newEdgeDirection)  
Constructs a DirectedEdge connecting the from node to the to node.  
Edge *  getEdge () const 
Returns this DirectedEdge's parent Edge, or null if it has none.  
void  setEdge (Edge *newParentEdge) 
Associates this DirectedEdge with an Edge (possibly null, indicating no associated Edge).  
int  getQuadrant () const 
Returns 0, 1, 2, or 3, indicating the quadrant in which this DirectedEdge's orientation lies.  
const geom::Coordinate &  getDirectionPt () const 
Returns a point to which an imaginary line is drawn from the fromnode to specify this DirectedEdge's orientation.  
bool  getEdgeDirection () const 
Returns whether the direction of the parent Edge (if any) is the same as that of this Directed Edge.  
Node *  getFromNode () const 
Returns the node from which this DirectedEdge leaves.  
Node *  getToNode () const 
Returns the node to which this DirectedEdge goes.  
geom::Coordinate &  getCoordinate () const 
Returns the coordinate of the fromnode.  
double  getAngle () const 
Returns the angle that the start of this DirectedEdge makes with the positive xaxis, in radians.  
DirectedEdge *  getSym () const 
Returns the symmetric DirectedEdge  the other DirectedEdge associated with this DirectedEdge's parent Edge.  
void  setSym (DirectedEdge *newSym) 
Sets this DirectedEdge's symmetric DirectedEdge, which runs in the opposite direction.  
int  compareTo (const DirectedEdge *obj) const 
Returns 1 if this DirectedEdge has a greater angle with the positive xaxis than b", 0 if the DirectedEdges are collinear, and 1 otherwise.  
int  compareDirection (const DirectedEdge *e) const 
Returns 1 if this DirectedEdge has a greater angle with the positive xaxis than b", 0 if the DirectedEdges are collinear, and 1 otherwise.  
std::string  print () const 
Prints a detailed string representation of this DirectedEdge to the given PrintStream.  
Static Public Member Functions  
static std::vector< Edge * > *  toEdges (std::vector< DirectedEdge * > &dirEdges) 
Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges.  
static void  toEdges (std::vector< DirectedEdge * > &dirEdges, std::vector< Edge * > &parentEdges) 
Add parent Edge (possibly null) of each of the given DirectedEdges to the given parentEdges vector.  
Protected Attributes  
Edge *  parentEdge 
Node *  from 
Node *  to 
geom::Coordinate  p0 
geom::Coordinate  p1 
DirectedEdge *  sym 
bool  edgeDirection 
int  quadrant 
double  angle 
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 applicationspecific data and methods.

Constructs a DirectedEdge connecting the


Returns 1 if this DirectedEdge has a greater angle with the positive xaxis 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:


Returns 1 if this DirectedEdge has a greater angle with the positive xaxis 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:


Add parent Edge (possibly null) of each of the given DirectedEdges to the given parentEdges vector. NOTE: parents are pushed to the parentEdges vector, make sure it is empty if indexbased corrispondence is important. 

Returns a List containing the parent Edge (possibly null) for each of the given DirectedEdges. NOTE: ownership of the returned vector is left to the caller, see the equivalent function taking a vector reference to avoid this. 