22 #ifndef NBContHelper_h 23 #define NBContHelper_h 61 EdgeVector::const_iterator& from);
66 EdgeVector::const_iterator& from);
73 static std::ostream&
out(std::ostream& os,
const std::vector<bool>& v);
108 myRefIncoming(e->getToNode() == n) {
186 myAngle = getEdgeAngleAt(e, n);
195 return getDiff(e1) > getDiff(e2);
246 : myAngle(e->getTotalAngle()) {}
342 std::pair<double, double> mm1 = getMinMaxRelAngles(e1);
343 std::pair<double, double> mm2 = getMinMaxRelAngles(e2);
344 if (mm1.first == mm2.first && mm1.second == mm2.second) {
350 (mm1.first <= mm2.first && mm1.second <= mm2.second)
352 (mm1.first >= mm2.first && mm1.second >= mm2.second));
353 return (mm1.first >= mm2.first && mm1.second >= mm2.second);
363 for (EdgeVector::const_iterator i = ev.begin(); i != ev.end(); ++i) {
366 if (min == 360 || min > angle) {
369 if (max == 360 || max < angle) {
373 return std::pair<double, double>(
min,
max);
384 : myReferenceEdge(edge) { }
388 myReferenceEdge->isTurningDirectionAt(e);
static double getMinAngleDiff(double angle1, double angle2)
Returns the minimum distance (clockwise/counter-clockwise) between both angles.
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)
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)
const std::string & getID() const
Returns the id.
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
straightness_sorter(const NBNode *n, const NBEdge *e)
constructor
edge_similar_direction_sorter(const NBEdge *const e)
constructor
edge_opposite_direction_sorter(const NBEdge *const e, const NBNode *const n)
Constructor.
static std::ostream & out(std::ostream &os, const std::vector< bool > &v)
int getNumLanes() const
Returns the number of lanes.
A point in 2D or 3D with translation and scaling methods.
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
NBEdge * myEdge
the edge to compute the relative angle of
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
edge_by_angle_to_nodeShapeCentroid_sorter(const NBNode *n)
constructor
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
double myAngle
The angle of the related edge at the given node.
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
const PositionVector & getLaneShape(int i) const
Returns the shape of the nth lane.
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
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)
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.
double getShapeEndAngle() const
Returns the angle at the end of the edge.
static void nextCCW(const EdgeVector &edges, EdgeVector::const_iterator &from)
static NBEdge * findConnectingEdge(const EdgeVector &edges, NBNode *from, NBNode *to)