39 #ifdef CHECK_MEMORY_LEAKS 41 #endif // CHECK_MEMORY_LEAKS 53 if (from == edges.end()) {
61 if (from == edges.begin()) {
62 from = edges.end() - 1;
71 for (std::vector<bool>::const_iterator i = v.begin(); i != v.end(); i++) {
81 for (EdgeVector::const_iterator i = edges.begin(); i != edges.end(); i++) {
82 if ((*i)->getToNode() == to && (*i)->getFromNode() == from) {
93 assert(ev.size() > 0);
95 for (EdgeVector::const_iterator i = ev.begin() + 1; i != ev.end(); i++) {
97 max > (*i)->getSpeed()
98 ? max : (*i)->getSpeed();
115 return std::find(incoming.begin(), incoming.end(),
myEdge) != incoming.end();
130 return std::find(outgoing.begin(), outgoing.end(),
myEdge) != outgoing.end();
139 : myDestinationNode(dest) {}
152 if (e1 == 0 || e2 == 0) {
161 while (fabs(relAngle1 - relAngle2) < 3.0) {
174 return relAngle1 > relAngle2;
183 if (e1 == 0 || e2 == 0) {
192 while (fabs(relAngle1 - relAngle2) < 3.0) {
205 return relAngle1 > relAngle2;
211 for (EdgeVector::const_iterator i = ev.begin(); i != ev.end(); i++) {
212 if (i != ev.begin()) {
225 if (edges.size() == 0) {
228 SUMOReal ret = (*(edges.begin()))->getSpeed();
229 for (EdgeVector::const_iterator i = edges.begin() + 1; i != edges.end(); i++) {
230 if ((*i)->getSpeed() > ret) {
231 ret = (*i)->getSpeed();
240 if (edges.size() == 0) {
243 SUMOReal ret = (*(edges.begin()))->getSpeed();
244 for (EdgeVector::const_iterator i = edges.begin() + 1; i != edges.end(); i++) {
245 if ((*i)->getSpeed() < ret) {
246 ret = (*i)->getSpeed();
262 if (absDiff < 2 || absDiff > (360 - 2)) {
287 return angle1 < angle2;
const EdgeVector & getIncomingEdges() const
Returns this node's incoming edges.
node_with_outgoing_finder(const NBEdge *const e)
constructor
static SUMOReal normRelAngle(SUMOReal angle1, SUMOReal angle2)
ensure that reverse relAngles (>=179.999) always count as turnarounds (-180)
const NBEdge *const myEdge
SUMOReal getEndAngle() const
Returns the angle at the end of the edge The angle is computed in computeAngle()
friend std::ostream & operator<<(std::ostream &os, const EdgeVector &ev)
The representation of a single edge during network building.
bool operator()(const NBNode *const n) const
static void nextCW(const EdgeVector &edges, EdgeVector::const_iterator &from)
int operator()(const NBEdge *e1, const NBEdge *e2) const
comparing operation
Position positionAtOffset2D(SUMOReal pos, SUMOReal lateralOffset=0) const
Returns the position at the given length.
NBNode * myDestinationNode
const EdgeVector & getOutgoingEdges() const
Returns this node's outgoing edges.
const std::string & getID() const
Returns the id.
const Position & getPosition() const
Returns the position of this node.
static std::ostream & out(std::ostream &os, const std::vector< bool > &v)
static SUMOReal legacyDegree(const SUMOReal angle, const bool positive=false)
bool operator()(const NBNode *const n) const
A point in 2D or 3D with translation and scaling methods.
static SUMOReal maxSpeed(const EdgeVector &ev)
SUMOReal getAngleAtNodeToCenter(const NBNode *const node) const
Returns the angle of from the node shape center to where the edge meets the node shape.
edge_with_destination_finder(NBNode *dest)
constructor
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
static SUMOReal getMaxSpeed(const EdgeVector &edges)
SUMOReal length() const
Returns the length.
NBNode * getToNode() const
Returns the destination node of the edge.
std::vector< NBEdge * > EdgeVector
const NBEdge *const myEdge
const PositionVector & getGeometry() const
Returns the geometry of the edge.
bool operator()(NBEdge *e) const
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
node_with_incoming_finder(const NBEdge *const e)
constructor
Represents a single node (junction) during network building.
SUMOReal getStartAngle() const
Returns the angle at the start of the edge The angle is computed in computeAngle() ...
static SUMOReal getMinSpeed(const EdgeVector &edges)
static void nextCCW(const EdgeVector &edges, EdgeVector::const_iterator &from)
int operator()(NBEdge *e1, NBEdge *e2) const
comparing operation
SUMOReal angleTo2D(const Position &other) const
returns the angle in the plane of the vector pointing from here to the other position ...
static const SUMOReal ANGLE_LOOKAHEAD
the distance at which to take the default angle
static NBEdge * findConnectingEdge(const EdgeVector &edges, NBNode *from, NBNode *to)
SUMOReal getLength() const
Returns the computed length of the edge.
NBNode * getFromNode() const
Returns the origin node of the edge.