19 #ifndef NBContHelper_h 20 #define NBContHelper_h 54 EdgeVector::const_iterator& from);
59 EdgeVector::const_iterator& from);
66 static std::ostream&
out(std::ostream& os,
const std::vector<bool>& v);
150 myRegardPriority(regardPriority) {
151 myAngle = getEdgeAngleAt(e, n);
161 return getDiff(e1) > getDiff(e2);
222 : myAngle(e->getShapeEndAngle()) {}
235 return fabs(d1) < fabs(d2);
239 double angleDiff(
const double angle1,
const double angle2)
const {
240 double d = angle2 - angle1;
338 std::pair<double, double> mm1 = getMinMaxRelAngles(e1);
339 std::pair<double, double> mm2 = getMinMaxRelAngles(e2);
340 if (mm1.first == mm2.first && mm1.second == mm2.second) {
346 (mm1.first <= mm2.first && mm1.second <= mm2.second)
348 (mm1.first >= mm2.first && mm1.second >= mm2.second));
349 return (mm1.first >= mm2.first && mm1.second >= mm2.second);
359 for (EdgeVector::const_iterator i = ev.begin(); i != ev.end(); ++i) {
362 if (min == 360 || min > angle) {
365 if (max == 360 || max < angle) {
369 return std::pair<double, double>(min, max);
380 : myReferenceEdge(edge) { }
384 myReferenceEdge->isTurningDirectionAt(e);
double myAngle
the angle to find the edge with the opposite direction
static double maxSpeed(const EdgeVector &ev)
static double getMinSpeed(const EdgeVector &edges)
NBEdge * myEdge
the edge to compute the relative angle of
static double normRelAngle(double angle1, double angle2)
ensure that reverse relAngles (>=179.999) always count as turnarounds (-180)
bool myRegardPriority
Whether edge priority may override closer angles.
const NBNode *const myNode
The related node.
int getPriority() const
Returns the priority of the edge.
const NBEdge *const myEdge
friend std::ostream & operator<<(std::ostream &os, const EdgeVector &ev)
The representation of a single edge during network building.
Class to sort edges by their angle in relation to the given edge.
double getEdgeAngleAt(const NBEdge *const e, const NBNode *const n) const
Returns the given edge's angle at the given node.
std::pair< double, double > getMinMaxRelAngles(NBEdge *e) const
opposite_finder(NBEdge *edge)
constructor
int operator()(NBEdge *e1, NBEdge *e2) const
Comparing operation.
double getDiff(const NBEdge *const e) const
Computes the angle difference between the related and the given edge.
static void nextCW(const EdgeVector &edges, EdgeVector::const_iterator &from)
int operator()(const NBEdge *e1, const NBEdge *e2) const
comparing operation
relative_outgoing_edge_sorter(NBEdge *e)
constructor
double getShapeStartAngle() const
Returns the angle at the start of the edge.
bool operator()(NBEdge *e) const
NBNode * myDestinationNode
edge_similar_direction_sorter(const NBEdge *const e)
constructor
static std::ostream & out(std::ostream &os, const std::vector< bool > &v)
int getNumLanes() const
Returns the number of lanes.
int getNumericalID() const
Returns the index (numeric id) of the edge.
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
NBEdge * myEdge
the edge to compute the relative angle of
const std::string & getID() const
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
edge_by_angle_to_nodeShapeCentroid_sorter(const NBNode *n)
constructor
double myAngle
The angle of the related edge at the given node.
double angleDiff(const double angle1, const double angle2) const
double getSpeed() const
Returns the speed allowed on this edge.
const PositionVector & getGeometry() const
Returns the geometry of the edge.
double getTotalAngle() const
Returns the angle at the start of the edge.
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operator
same_connection_edge_sorter()
constructor
std::vector< NBEdge * > EdgeVector
container for (sorted) edges
const NBEdge *const myEdge
const NBNode * myNode
the edge to compute the relative angle of
double angleAt2D(int pos) const
get angle in certain position of position vector
edge_opposite_direction_sorter(const NBEdge *const e, const NBNode *const n, bool regardPriority)
Constructor.
bool isTurningDirectionAt(const NBEdge *const edge) const
Returns whether the given edge is the opposite direction to this edge.
Represents a single node (junction) during network building.
EdgeVector getConnectedEdges() const
Returns the list of outgoing edges unsorted.
static double getMaxSpeed(const EdgeVector &edges)
const NBEdge *const myEdge
the reference edge
NBNode * getFromNode() const
Returns the origin node of the edge.
relative_incoming_edge_sorter(NBEdge *e)
constructor
static double angleDiff(const double angle1, const double angle2)
Returns the difference of the second angle to the first angle in radiants.
static void nextCCW(const EdgeVector &edges, EdgeVector::const_iterator &from)
static NBEdge * findConnectingEdge(const EdgeVector &edges, NBNode *from, NBNode *to)