SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NBEdge.h
Go to the documentation of this file.
1 /****************************************************************************/
9 // The representation of a single edge during network building
10 /****************************************************************************/
11 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
12 // Copyright (C) 2001-2015 DLR (http://www.dlr.de/) and contributors
13 /****************************************************************************/
14 //
15 // This file is part of SUMO.
16 // SUMO is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 /****************************************************************************/
22 #ifndef NBEdge_h
23 #define NBEdge_h
24 
25 
26 // ===========================================================================
27 // included modules
28 // ===========================================================================
29 #ifdef _MSC_VER
30 #include <windows_config.h>
31 #else
32 #include <config.h>
33 #endif
34 
35 #include <map>
36 #include <vector>
37 #include <string>
38 #include <set>
39 #include <utils/common/Named.h>
43 #include <utils/geom/Bresenham.h>
45 #include <utils/geom/Line.h>
48 #include "NBCont.h"
49 #include "NBHelpers.h"
50 #include "NBSign.h"
51 
52 
53 // ===========================================================================
54 // class declarations
55 // ===========================================================================
56 class NBNode;
57 class NBConnection;
58 class NBNodeCont;
59 class NBEdgeCont;
60 class OutputDevice;
61 class GNELane;
62 
63 
64 // ===========================================================================
65 // class definitions
66 // ===========================================================================
71 class NBEdge : public Named, public Parameterised {
73  friend class NBEdgeSuccessorBuilder;
74  friend class NBEdgeCont;
75 
77  friend class GNELane;
78  friend class GNEEdge;
79 
80 public:
81 
104  };
105 
106 
117  };
118 
119 
123  struct Lane {
124  Lane(NBEdge* e) :
126  endOffset(e->getEndOffset()), width(e->getLaneWidth()) {}
140  std::string origID;
141 
142  };
143 
144 
148  struct Connection {
154  Connection(int fromLane_, NBEdge* toEdge_, int toLane_)
155  : fromLane(fromLane_), toEdge(toEdge_), toLane(toLane_),
156  mayDefinitelyPass(false), keepClear(true), haveVia(false) { }
157 
159 
160 
162  int fromLane;
166  int toLane;
168  std::string tlID;
170  unsigned int tlLinkNo;
174  bool keepClear;
175 
176 
177  std::string origID;
178 
179  std::string id;
182 
183  bool haveVia;
184  std::string viaID;
187 
188  std::vector<unsigned int> foeInternalLinks;
189  std::string foeIncomingLanes;
190 
192  unsigned int internalLaneIndex;
193 
194  std::string getInternalLaneID() const;
195 
196  };
197 
199  static std::pair<SUMOReal, SUMOReal> laneOffset(const Position& from,
200  const Position& to, SUMOReal laneCenterOffset);
201 
208 
214  static const SUMOReal ANGLE_LOOKAHEAD;
215 
216 public:
235  NBEdge(const std::string& id,
236  NBNode* from, NBNode* to, std::string type,
237  SUMOReal speed, unsigned int nolanes, int priority,
238  SUMOReal width, SUMOReal offset,
239  const std::string& streetName = "",
241 
242 
263  NBEdge(const std::string& id,
264  NBNode* from, NBNode* to, std::string type,
265  SUMOReal speed, unsigned int nolanes, int priority,
266  SUMOReal width, SUMOReal offset,
267  PositionVector geom,
268  const std::string& streetName = "",
270  bool tryIgnoreNodePositions = false);
271 
283  NBEdge(const std::string& id,
284  NBNode* from, NBNode* to,
285  NBEdge* tpl,
286  const PositionVector& geom = PositionVector(),
287  int numLanes = -1);
288 
289 
292  ~NBEdge();
293 
294 
310  void reinit(NBNode* from, NBNode* to, const std::string& type,
311  SUMOReal speed, unsigned int nolanes, int priority,
312  PositionVector geom, SUMOReal width, SUMOReal offset,
313  const std::string& streetName,
315  bool tryIgnoreNodePositions = false);
316 
321  void reinitNodes(NBNode* from, NBNode* to);
322 
323 
326 
331  void reshiftPosition(SUMOReal xoff, SUMOReal yoff);
332 
334  void mirrorX();
336 
338 
339 
343  unsigned int getNumLanes() const {
344  return (unsigned int) myLanes.size();
345  }
346 
347 
351  int getPriority() const {
352  return myPriority;
353  }
354 
355 
359  NBNode* getFromNode() const {
360  return myFrom;
361  }
362 
363 
367  NBNode* getToNode() const {
368  return myTo;
369  }
370 
371 
376  inline SUMOReal getStartAngle() const {
377  return myStartAngle;
378  }
379 
380 
385  inline SUMOReal getEndAngle() const {
386  return myEndAngle;
387  }
388 
389 
391 
395  inline SUMOReal getTotalAngle() const {
396  return myTotalAngle;
397  }
398 
402  SUMOReal getLength() const {
403  return myLength;
404  }
405 
406 
412  return myLoadedLength > 0 ? myLoadedLength : myLength;
413  }
414 
415 
419  bool hasLoadedLength() const {
420  return myLoadedLength > 0;
421  }
422 
423 
427  SUMOReal getSpeed() const {
428  return mySpeed;
429  }
430 
431 
438  return myStep;
439  }
440 
441 
446  return myLaneWidth;
447  }
448 
452  SUMOReal getLaneWidth(int lane) const;
453 
454 
457  SUMOReal getTotalWidth() const;
458 
461  const std::string& getStreetName() const {
462  return myStreetName;
463  }
464 
467  void setStreetName(const std::string& name) {
468  myStreetName = name;
469  }
470 
475  return myEndOffset;
476  }
477 
481  SUMOReal getEndOffset(int lane) const;
482 
486  return mySignalOffset;
487  }
488 
491  void setSignalOffset(SUMOReal offset) {
492  mySignalOffset = offset;
493  }
494 
498  const std::vector<NBEdge::Lane>& getLanes() const {
499  return myLanes;
500  }
502 
507  int getFirstNonPedestrianLaneIndex(int direction, bool exclusive = false) const;
508  NBEdge::Lane getFirstNonPedestrianLane(int direction) const;
509 
512 
514 
515 
519  const PositionVector& getGeometry() const {
520  return myGeom;
521  }
522 
523 
525  const PositionVector getInnerGeometry() const;
526 
527 
530  bool hasDefaultGeometry() const;
531 
532 
538  bool hasDefaultGeometryEndpoints() const;
539 
540 
551  void setGeometry(const PositionVector& g, bool inner = false);
552 
553 
563  void addGeometryPoint(int index, const Position& p);
564 
568  void shiftPositionAtNode(NBNode* node, NBEdge* opposite);
569 
579  void computeEdgeShape();
580 
581 
585  const PositionVector& getLaneShape(unsigned int i) const;
586 
587 
593 
594 
600  return myLaneSpreadFunction;
601  }
602 
603 
609  bool splitGeometry(NBEdgeCont& ec, NBNodeCont& nc);
610 
611 
615  void reduceGeometry(const SUMOReal minDist);
616 
617 
623  void checkGeometry(const SUMOReal maxAngle, const SUMOReal minRadius, bool fix);
625 
626 
627 
630 
645  bool addEdge2EdgeConnection(NBEdge* dest);
646 
647 
668  bool addLane2LaneConnection(unsigned int fromLane, NBEdge* dest,
669  unsigned int toLane, Lane2LaneInfoType type,
670  bool mayUseSameDestination = false,
671  bool mayDefinitelyPass = false,
672  bool keepClear = true);
673 
674 
692  bool addLane2LaneConnections(unsigned int fromLane,
693  NBEdge* dest, unsigned int toLane, unsigned int no,
694  Lane2LaneInfoType type, bool invalidatePrevious = false,
695  bool mayDefinitelyPass = false);
696 
697 
708  void setConnection(unsigned int lane, NBEdge* destEdge,
709  unsigned int destLane,
710  Lane2LaneInfoType type,
711  bool mayUseSameDestination = false,
712  bool mayDefinitelyPass = false,
713  bool keepClear = true);
714 
715 
716 
725  std::vector<Connection> getConnectionsFromLane(unsigned int lane) const;
726 
727 
736  bool hasConnectionTo(NBEdge* destEdge, unsigned int destLane, int fromLane = -1) const;
737 
738 
745  bool isConnectedTo(NBEdge* e);
746 
747 
751  const std::vector<Connection>& getConnections() const {
752  return myConnections;
753  }
754 
755 
759  std::vector<Connection>& getConnections() {
760  return myConnections;
761  }
762 
763 
768 
769 
774 
775 
779  std::vector<int> getConnectionLanes(NBEdge* currentOutgoing) const;
780 
781 
785 
786 
790 
791 
797  void remapConnections(const EdgeVector& incoming);
798 
799 
806  void removeFromConnections(NBEdge* toEdge, int fromLane = -1, int toLane = -1, bool tryLater = false);
807 
808  void invalidateConnections(bool reallowSetting = false);
809 
810  void replaceInConnections(NBEdge* which, NBEdge* by, unsigned int laneOff);
811  void replaceInConnections(NBEdge* which, const std::vector<NBEdge::Connection>& origConns);
812  void copyConnectionsFrom(NBEdge* src);
813 
815  void shiftToLanesToEdge(NBEdge* to, unsigned int laneOff);
817 
818 
819 
825  bool isTurningDirectionAt(const NBEdge* const edge) const;
826 
827 
832  void setTurningDestination(NBEdge* e, bool onlyPossible = false);
833 
834 
835 
838 
843  }
844 
845 
849  bool isMacroscopicConnector() const {
851  }
852 
853 
856  void setIsInnerEdge() {
857  myAmInnerEdge = true;
858  }
859 
860 
864  bool isInnerEdge() const {
865  return myAmInnerEdge;
866  }
868 
869 
870 
871 
877  void setJunctionPriority(const NBNode* const node, int prio);
878 
879 
889  int getJunctionPriority(const NBNode* const node) const;
890 
891  void setLoadedLength(SUMOReal val);
893 
894 
895  const std::string& getTypeID() const {
896  return myType;
897  }
898 
900  bool needsLaneSpecificOutput() const;
901 
903  bool hasPermissions() const;
904 
906  bool hasLaneSpecificPermissions() const;
907 
909  bool hasLaneSpecificSpeed() const;
910 
912  bool hasLaneSpecificEndOffset() const;
913 
915  bool hasLaneSpecificWidth() const;
916 
918  bool computeEdge2Edges(bool noLeftMovers);
919 
921  bool computeLanes2Edges();
922 
925  bool recheckLanes();
926 
935  void appendTurnaround(bool noTLSControlled);
936 
937 
938 
942  NBNode* tryGetNodeAtPosition(SUMOReal pos, SUMOReal tolerance = 5.0) const;
943 
944 
946 
947  bool lanesWereAssigned() const;
948 
949  bool mayBeTLSControlled(int fromLane, NBEdge* toEdge, int toLane) const;
950 
952  bool setControllingTLInformation(const NBConnection& c, const std::string& tlID);
953 
956 
958  PositionVector& into);
959 
961  PositionVector getCWBoundaryLine(const NBNode& n) const;
962 
964  PositionVector getCCWBoundaryLine(const NBNode& n) const;
965 
966  bool expandableBy(NBEdge* possContinuation) const;
967  void append(NBEdge* continuation);
968 
969  bool hasSignalisedConnectionTo(const NBEdge* const e) const;
970 
971 
972  void moveOutgoingConnectionsFrom(NBEdge* e, unsigned int laneOff);
973 
974  /* @brief return the turn destination if it exists
975  * @param[in] possibleDestination Wether myPossibleTurnDestination should be returned if no turnaround connection
976  * exists
977  */
978  NBEdge* getTurnDestination(bool possibleDestination = false) const;
979 
980  std::string getLaneID(unsigned int lane) const;
981 
982  std::string getLaneIDInsecure(unsigned int lane) const;
983 
984  SUMOReal getLaneSpeed(unsigned int lane) const;
985 
986  bool isNearEnough2BeJoined2(NBEdge* e, SUMOReal threshold) const;
987 
988 
996  SUMOReal getAngleAtNode(const NBNode* const node) const;
997 
998 
1007  SUMOReal getAngleAtNodeToCenter(const NBNode* const node) const;
1008 
1009 
1010  void incLaneNo(unsigned int by);
1011 
1012  void decLaneNo(unsigned int by, int dir = 0);
1013 
1014  void markAsInLane2LaneState();
1015 
1017  void addSidewalk(SUMOReal width);
1018 
1020  void addBikeLane(SUMOReal width);
1021 
1023  void setPermissions(SVCPermissions permissions, int lane = -1);
1024 
1025  void setPreferredVehicleClass(SVCPermissions permissions, int lane = -1);
1026 
1028  void allowVehicleClass(int lane, SUMOVehicleClass vclass);
1030  void disallowVehicleClass(int lane, SUMOVehicleClass vclass);
1031 
1032  void preferVehicleClass(int lane, SUMOVehicleClass vclass);
1033 
1034 
1036  void setLaneWidth(int lane, SUMOReal width);
1037 
1039  void setEndOffset(int lane, SUMOReal offset);
1040 
1042  void setSpeed(int lane, SUMOReal speed);
1043 
1045  SVCPermissions getPermissions(int lane = -1) const;
1046 
1047  void disableConnection4TLS(int fromLane, NBEdge* toEdge, int toLane);
1048 
1049 
1050  // returns a reference to the internal structure for the convenience of NETEDIT
1051  Lane& getLaneStruct(unsigned int lane) {
1052  return myLanes[lane];
1053  }
1054 
1055  // returns a reference to the internal structure for the convenience of NETEDIT
1056  const Lane& getLaneStruct(unsigned int lane) const {
1057  return myLanes[lane];
1058  }
1059 
1060  /* declares connections as fully loaded. This is needed to avoid recomputing connections
1061  * if an edge has no connections intentionally. */
1064  }
1065 
1066  /* @brief fill connection attributes shape, viaShape, ...
1067  *
1068  * @param[in,out] edgeIndex The number of connections already handled
1069  * @param[in,out] splitIndex The number of via edges already built
1070  * @param[in] tryIgnoreNodePositions Does not add node geometries if geom.size()>=2
1071  */
1072  void buildInnerEdges(const NBNode& n, unsigned int noInternalNoSplits, unsigned int& linkIndex, unsigned int& splitIndex);
1073 
1074  inline const std::vector<NBSign>& getSigns() const {
1075  return mySigns;
1076  }
1077 
1078  inline void addSign(NBSign sign) {
1079  mySigns.push_back(sign);
1080  }
1081 
1084 
1085 private:
1092  private:
1094  std::map<NBEdge*, std::vector<unsigned int> > myConnections;
1095 
1098 
1099  public:
1102  : myTransitions(transitions) { }
1103 
1106 
1108  void execute(const unsigned int lane, const unsigned int virtEdge);
1109 
1110  const std::map<NBEdge*, std::vector<unsigned int> >& getBuiltConnections() const {
1111  return myConnections;
1112  }
1113 
1114  private:
1117 
1120 
1121  };
1122 
1123 
1132  public:
1135 
1138  std::vector<Direction> myDirs;
1139 
1140  public:
1142  MainDirections(const EdgeVector& outgoing,
1143  NBEdge* parent, NBNode* to);
1144 
1146  ~MainDirections();
1147 
1150  bool empty() const;
1151 
1154  bool includes(Direction d) const;
1155 
1156  private:
1159 
1162 
1163  };
1164 
1166  PositionVector computeLaneShape(unsigned int lane, SUMOReal offset) const;
1167 
1169  //std::pair<SUMOReal, SUMOReal> laneOffset(const Position& from, const Position& to, SUMOReal laneCenterOffset);
1170 
1171  void computeLaneShapes();
1172 
1173 
1174 
1175 private:
1191  void init(unsigned int noLanes, bool tryIgnoreNodePositions);
1192 
1193 
1195  void divideOnEdges(const EdgeVector* outgoing);
1196  void divideSelectedLanesOnEdges(const EdgeVector* outgoing, const std::vector<int>& availableLanes,
1197  const std::vector<unsigned int>* priorities);
1198 
1201  std::vector<unsigned int>* prepareEdgePriorities(
1202  const EdgeVector* outgoing);
1203 
1205  static unsigned int computePrioritySum(const std::vector<unsigned int>& priorities);
1206 
1207 
1210 
1213  void moveConnectionToLeft(unsigned int lane);
1214 
1217  void moveConnectionToRight(unsigned int lane);
1218 
1220  bool canMoveConnection(const Connection& con, unsigned int newFromLane) const;
1222 
1223 
1228  PositionVector startShapeAt(const PositionVector& laneShape, const NBNode* startNode) const;
1229 
1231  void computeAngle();
1232 
1233 
1234  /* @brief compute the first intersection point between the given lane
1235  * geometries considering their rspective widths */
1236  static SUMOReal firstIntersection(const PositionVector& v1, const PositionVector& v2, SUMOReal width2);
1237 
1238 
1240  void addRestrictedLane(SUMOReal width, SUMOVehicleClass vclass);
1241 
1242 private:
1247 
1249  std::string myType;
1250 
1253 
1256 
1261 
1264 
1267 
1271  std::vector<Connection> myConnections;
1272 
1275  std::vector<Connection> myConnectionsToDelete;
1276 
1281 
1284 
1287 
1290 
1293 
1296 
1299 
1303  std::vector<Lane> myLanes;
1304 
1307 
1310 
1313 
1317  int toLane;
1318  };
1319 
1320  std::vector<TLSDisabledConnection> myTLSDisabledConnections;
1321 
1322 
1324  std::string myStreetName;
1325 
1326 
1328  std::vector<NBSign> mySigns;
1329 
1332 
1333 public:
1338  public:
1341 
1342  bool operator()(const TLSDisabledConnection& e) const {
1343  if (e.to != myDefinition.to) {
1344  return false;
1345  }
1346  if (e.fromLane != myDefinition.fromLane) {
1347  return false;
1348  }
1349  if (e.toLane != myDefinition.toLane) {
1350  return false;
1351  }
1352  return true;
1353  }
1354 
1355  private:
1357 
1358  private:
1361 
1362  };
1363 
1364 
1365 
1370  public:
1372  connections_toedge_finder(NBEdge* const edge2find, bool hasFromLane = false) :
1373  myHasFromLane(hasFromLane),
1374  myEdge2Find(edge2find) { }
1375 
1376  bool operator()(const Connection& c) const {
1377  return c.toEdge == myEdge2Find && (!myHasFromLane || c.fromLane != -1);
1378  }
1379 
1380  private:
1381  const bool myHasFromLane;
1383 
1384  private:
1387 
1388  };
1389 
1394  public:
1396  connections_toedgelane_finder(NBEdge* const edge2find, int lane2find, int fromLane2find) :
1397  myEdge2Find(edge2find),
1398  myLane2Find(lane2find),
1399  myFromLane2Find(fromLane2find) { }
1400 
1401  bool operator()(const Connection& c) const {
1402  return c.toEdge == myEdge2Find && c.toLane == myLane2Find && (myFromLane2Find < 0 || c.fromLane == myFromLane2Find);
1403  }
1404 
1405  private:
1409 
1410  private:
1413 
1414  };
1415 
1416 
1421  public:
1423  connections_finder(int fromLane, NBEdge* const edge2find, int lane2find) : myFromLane(fromLane), myEdge2Find(edge2find), myLane2Find(lane2find) { }
1424 
1425  bool operator()(const Connection& c) const {
1426  return c.fromLane == myFromLane && c.toEdge == myEdge2Find && c.toLane == myLane2Find;
1427  }
1428 
1429  private:
1433 
1434  private:
1437 
1438  };
1439 
1444  public:
1446  connections_fromlane_finder(int lane2find) : myLane2Find(lane2find) { }
1447 
1448  bool operator()(const Connection& c) const {
1449  return c.fromLane == myLane2Find;
1450  }
1451 
1452  private:
1454 
1455  private:
1458 
1459  };
1460 
1464  static bool connections_sorter(const Connection& c1, const Connection& c2);
1465 
1471  public:
1474 
1475  public:
1477  int operator()(const Connection& c1, const Connection& c2) const;
1478 
1479  private:
1482  };
1483 
1484 private:
1486  NBEdge(const NBEdge& s);
1487 
1489  NBEdge& operator=(const NBEdge& s);
1490 
1491 
1492 };
1493 
1494 
1495 #endif
1496 
1497 /****************************************************************************/
1498 
ToEdgeConnectionsAdder(const EdgeVector &transitions)
constructor
Definition: NBEdge.h:1101
NBEdge::Lane getFirstNonPedestrianLane(int direction) const
Definition: NBEdge.cpp:2449
std::string id
Definition: NBEdge.h:179
void invalidateConnections(bool reallowSetting=false)
Definition: NBEdge.cpp:920
const PositionVector & getLaneShape(unsigned int i) const
Returns the shape of the nth lane.
Definition: NBEdge.cpp:531
std::vector< Lane > myLanes
Lane information.
Definition: NBEdge.h:1303
bool includes(Direction d) const
Definition: NBEdge.cpp:164
PositionVector cutAtIntersection(const PositionVector &old) const
cut shape at the intersection shapes
Definition: NBEdge.cpp:442
bool hasConnectionTo(NBEdge *destEdge, unsigned int destLane, int fromLane=-1) const
Retrieves info about a connection to a certain lane of a certain edge.
Definition: NBEdge.cpp:783
const std::string & getTypeID() const
Definition: NBEdge.h:895
bool setControllingTLInformation(const NBConnection &c, const std::string &tlID)
Returns if the link could be set as to be controlled.
Definition: NBEdge.cpp:1924
SUMOReal endOffset
This lane&#39;s offset to the intersection begin.
Definition: NBEdge.h:136
void divideOnEdges(const EdgeVector *outgoing)
Definition: NBEdge.cpp:1628
A structure which describes a connection between edges or lanes.
Definition: NBEdge.h:148
int toLane
The lane the connections yields in.
Definition: NBEdge.h:166
static const SUMOReal UNSPECIFIED_WIDTH
unspecified lane width
Definition: NBEdge.h:203
SUMOReal myTotalAngle
Definition: NBEdge.h:1260
A class representing a single street sign.
Definition: NBSign.h:51
connections_finder(int fromLane, NBEdge *const edge2find, int lane2find)
constructor
Definition: NBEdge.h:1423
std::string foeIncomingLanes
Definition: NBEdge.h:189
PositionVector shape
The lane&#39;s shape.
Definition: NBEdge.h:128
SUMOReal myEndOffset
This edges&#39;s offset to the intersection begin (will be applied to all lanes)
Definition: NBEdge.h:1295
std::vector< TLSDisabledConnection > myTLSDisabledConnections
Definition: NBEdge.h:1320
connections_relative_edgelane_sorter(NBEdge *e)
constructor
Definition: NBEdge.h:1473
~NBEdge()
Destructor.
Definition: NBEdge.cpp:376
static const SUMOReal UNSPECIFIED_SIGNAL_OFFSET
unspecified signal offset
Definition: NBEdge.h:212
LaneSpreadFunction myLaneSpreadFunction
The information about how to spread the lanes.
Definition: NBEdge.h:1292
SUMOReal viaVmax
Definition: NBEdge.h:185
void sortOutgoingConnectionsByAngle()
sorts the outgoing connections by their angle relative to their junction
Definition: NBEdge.cpp:865
std::string viaID
Definition: NBEdge.h:184
void addSign(NBSign sign)
Definition: NBEdge.h:1078
NBEdge * toEdge
The edge the connections yields in.
Definition: NBEdge.h:164
bool hasDefaultGeometry() const
Returns whether the geometry consists only of the node positions.
Definition: NBEdge.cpp:415
void mirrorX()
mirror coordinates along the x-axis
Definition: NBEdge.cpp:391
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types...
NBNode * myTo
Definition: NBEdge.h:1252
The relationships between edges are computed/loaded.
Definition: NBEdge.h:95
void setConnection(unsigned int lane, NBEdge *destEdge, unsigned int destLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false, bool keepClear=true)
Adds a connection to a certain lane of a certain edge.
Definition: NBEdge.cpp:710
bool empty() const
Definition: NBEdge.cpp:158
void appendTurnaround(bool noTLSControlled)
Add a connection to the previously computed turnaround, if wished.
Definition: NBEdge.cpp:1843
connections_toedge_finder & operator=(const connections_toedge_finder &s)
invalidated assignment operator
bool operator()(const TLSDisabledConnection &e) const
Definition: NBEdge.h:1342
std::vector< NBSign > mySigns
the street signs along this edge
Definition: NBEdge.h:1328
bool hasLaneSpecificEndOffset() const
whether lanes differ in offset
Definition: NBEdge.cpp:1483
void setLaneWidth(int lane, SUMOReal width)
set lane specific width (negative lane implies set for all lanes)
Definition: NBEdge.cpp:2275
void setSpeed(int lane, SUMOReal speed)
set lane specific speed (negative lane implies set for all lanes)
Definition: NBEdge.cpp:2330
const std::vector< NBEdge::Lane > & getLanes() const
Returns the lane definitions.
Definition: NBEdge.h:498
void moveOutgoingConnectionsFrom(NBEdge *e, unsigned int laneOff)
Definition: NBEdge.cpp:1885
~ToEdgeConnectionsAdder()
destructor
Definition: NBEdge.h:1105
void addSidewalk(SUMOReal width)
add a pedestrian sidewalk of the given width and shift existing connctions
Definition: NBEdge.cpp:2459
SUMOReal getEndAngle() const
Returns the angle at the end of the edge The angle is computed in computeAngle()
Definition: NBEdge.h:385
int SVCPermissions
The representation of a single edge during network building.
Definition: NBEdge.h:71
void reinitNodes(NBNode *from, NBNode *to)
Resets nodes but keeps all other values the same (used when joining)
Definition: NBEdge.cpp:312
void clearControllingTLInformation()
clears tlID for all connections
Definition: NBEdge.cpp:1989
Lane2LaneInfoType
Modes of setting connections between lanes.
Definition: NBEdge.h:110
void declareConnectionsAsLoaded()
Definition: NBEdge.h:1062
bool mayBeTLSControlled(int fromLane, NBEdge *toEdge, int toLane) const
Definition: NBEdge.cpp:1913
bool hasDefaultGeometryEndpoints() const
Returns whether the geometry is terminated by the node positions This default may be violated by init...
Definition: NBEdge.cpp:421
bool operator()(const Connection &c) const
Definition: NBEdge.h:1401
void incLaneNo(unsigned int by)
Definition: NBEdge.cpp:2180
PositionVector getCCWBoundaryLine(const NBNode &n) const
get the outer boundary of this edge when going counter-clock-wise around the given node ...
Definition: NBEdge.cpp:2025
bool addLane2LaneConnections(unsigned int fromLane, NBEdge *dest, unsigned int toLane, unsigned int no, Lane2LaneInfoType type, bool invalidatePrevious=false, bool mayDefinitelyPass=false)
Builds no connections starting at the given lanes.
Definition: NBEdge.cpp:693
void setStreetName(const std::string &name)
sets the street name of this edge
Definition: NBEdge.h:467
static const SUMOReal UNSPECIFIED_SPEED
unspecified lane speed
Definition: NBEdge.h:207
std::vector< Direction > myDirs
Definition: NBEdge.h:1138
void buildInnerEdges(const NBNode &n, unsigned int noInternalNoSplits, unsigned int &linkIndex, unsigned int &splitIndex)
Definition: NBEdge.cpp:1045
void markAsInLane2LaneState()
Definition: NBEdge.cpp:2229
SUMOReal getTotalWidth() const
Returns the combined width of all lanes of this edge.
Definition: NBEdge.cpp:2299
Lanes to lanes - relationships are computed; should be recheked.
Definition: NBEdge.h:99
SUMOReal getLaneWidth() const
Returns the default width of lanes of this edge.
Definition: NBEdge.h:445
std::string getLaneIDInsecure(unsigned int lane) const
Definition: NBEdge.cpp:2166
void setPermissions(SVCPermissions permissions, int lane=-1)
set allowed/disallowed classes for the given lane or for all lanes if -1 is given ...
Definition: NBEdge.cpp:2346
int myFromJunctionPriority
The priority normalised for the node the edge is outgoing of.
Definition: NBEdge.h:1283
void computeLaneShapes()
Computes the offset from the edge shape on the current segment.
Definition: NBEdge.cpp:1290
bool mayDefinitelyPass
Information about being definitely free to drive (on-ramps)
Definition: NBEdge.h:172
tls_disable_finder(const TLSDisabledConnection &tpl)
constructor
Definition: NBEdge.h:1340
bool isInnerEdge() const
Returns whether this edge was marked as being within an intersection.
Definition: NBEdge.h:864
PositionVector myGeom
The geometry for the edge.
Definition: NBEdge.h:1289
void remapConnections(const EdgeVector &incoming)
Remaps the connection in a way that allows the removal of it.
Definition: NBEdge.cpp:877
const SVCPermissions SVCAll
static const SUMOReal UNSPECIFIED_OFFSET
unspecified lane offset
Definition: NBEdge.h:205
std::vector< Connection > getConnectionsFromLane(unsigned int lane) const
Returns connections from a given lane.
Definition: NBEdge.cpp:771
friend class GNEEdge
Definition: NBEdge.h:78
MainDirections & operator=(const MainDirections &)
Invalidated assignment operator.
void setGeometry(const PositionVector &g, bool inner=false)
(Re)sets the edge&#39;s geometry
Definition: NBEdge.cpp:428
static SUMOReal firstIntersection(const PositionVector &v1, const PositionVector &v2, SUMOReal width2)
Definition: NBEdge.cpp:1202
void setSignalOffset(SUMOReal offset)
sets the offset of a traffic signal from the end of this edge
Definition: NBEdge.h:491
const EdgeVector & myTransitions
the transition from the virtual lane to the edge it belongs to
Definition: NBEdge.h:1097
The connection was computed and validated.
Definition: NBEdge.h:116
PositionVector startShapeAt(const PositionVector &laneShape, const NBNode *startNode) const
Definition: NBEdge.cpp:490
SUMOReal vmax
Definition: NBEdge.h:181
const std::vector< NBSign > & getSigns() const
Definition: NBEdge.h:1074
The edge has been loaded, nothing is computed yet.
Definition: NBEdge.h:93
int myToJunctionPriority
The priority normalised for the node the edge is incoming in.
Definition: NBEdge.h:1286
EdgeVector getConnectedEdges() const
Returns the list of outgoing edges unsorted.
Definition: NBEdge.cpp:839
PositionVector shape
Definition: NBEdge.h:180
SUMOReal speed
The speed allowed on this lane.
Definition: NBEdge.h:130
bool keepClear
whether the junction must be kept clear when using this connection
Definition: NBEdge.h:174
void moveConnectionToRight(unsigned int lane)
Definition: NBEdge.cpp:1032
bool operator()(const Connection &c) const
Definition: NBEdge.h:1376
bool hasPermissions() const
whether at least one lane has restrictions
Definition: NBEdge.cpp:1436
SUMOReal getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn&#39;t set.
Definition: NBEdge.h:411
An (internal) definition of a single lane of an edge.
Definition: NBEdge.h:123
connections_toedge_finder(NBEdge *const edge2find, bool hasFromLane=false)
constructor
Definition: NBEdge.h:1372
SUMOReal mySpeed
The maximal speed.
Definition: NBEdge.h:1266
SVCPermissions permissions
List of vehicle types that are allowed on this lane.
Definition: NBEdge.h:132
bool addEdge2EdgeConnection(NBEdge *dest)
Adds a connection to another edge.
Definition: NBEdge.cpp:646
bool myAmMacroscopicConnector
Information whether this edge is a (macroscopic) connector.
Definition: NBEdge.h:1312
bool isConnectedTo(NBEdge *e)
Returns the information whethe a connection to the given edge has been added (or computed) ...
Definition: NBEdge.cpp:789
const PositionVector getInnerGeometry() const
Returns the geometry of the edge without the endpoints.
Definition: NBEdge.cpp:406
void reshiftPosition(SUMOReal xoff, SUMOReal yoff)
Applies an offset to the edge.
Definition: NBEdge.cpp:381
void divideSelectedLanesOnEdges(const EdgeVector *outgoing, const std::vector< int > &availableLanes, const std::vector< unsigned int > *priorities)
Definition: NBEdge.cpp:1692
static unsigned int computePrioritySum(const std::vector< unsigned int > &priorities)
Definition: NBEdge.cpp:1833
bool computeLanes2Edges()
computes the edge, step2: computation of which lanes approach the edges)
Definition: NBEdge.cpp:1522
NBEdge * myTurnDestination
The turn destination edge (if a connection exists)
Definition: NBEdge.h:1278
const std::map< NBEdge *, std::vector< unsigned int > > & getBuiltConnections() const
Definition: NBEdge.h:1110
const Lane & getLaneStruct(unsigned int lane) const
Definition: NBEdge.h:1056
friend class NBEdgeSuccessorBuilder
Definition: NBEdge.h:73
Lanes to lanes - relationships are loaded; no recheck is necessary/wished.
Definition: NBEdge.h:103
int operator()(const Connection &c1, const Connection &c2) const
comparing operation
Definition: NBEdge.cpp:173
bool hasLaneSpecificSpeed() const
whether lanes differ in speed
Definition: NBEdge.cpp:1472
int getPriority() const
Returns the priority of the edge.
Definition: NBEdge.h:351
void checkGeometry(const SUMOReal maxAngle, const SUMOReal minRadius, bool fix)
Check the angles of successive geometry segments.
Definition: NBEdge.cpp:600
std::string getLaneID(unsigned int lane) const
Definition: NBEdge.cpp:2159
void moveConnectionToLeft(unsigned int lane)
Definition: NBEdge.cpp:1017
static std::pair< SUMOReal, SUMOReal > laneOffset(const Position &from, const Position &to, SUMOReal laneCenterOffset)
Computes the offset from the edge shape on the current segment.
Definition: NBEdge.cpp:1388
void addCrossingPointsAsIncomingWithGivenOutgoing(NBEdge *o, PositionVector &into)
std::string tlID
The id of the traffic light that controls this connection.
Definition: NBEdge.h:168
SVCPermissions preferred
List of vehicle types that are preferred on this lane.
Definition: NBEdge.h:134
std::string getInternalLaneID() const
Definition: NBEdge.cpp:78
int fromLane
The lane the connections starts at.
Definition: NBEdge.h:162
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
TLSDisabledConnection myDefinition
Definition: NBEdge.h:1356
NBEdge & operator=(const NBEdge &s)
invalidated assignment operator
A list of positions.
SUMOReal myEndAngle
Definition: NBEdge.h:1259
tls_disable_finder & operator=(const tls_disable_finder &s)
invalidated assignment operator
bool hasLaneSpecificPermissions() const
whether lanes differ in allowed vehicle classes
Definition: NBEdge.cpp:1447
bool lanesWereAssigned() const
Definition: NBEdge.cpp:1901
static bool connections_sorter(const Connection &c1, const Connection &c2)
Definition: NBEdge.cpp:2404
std::vector< unsigned int > foeInternalLinks
Definition: NBEdge.h:188
std::vector< Connection > & getConnections()
Returns the connections.
Definition: NBEdge.h:759
unsigned int getNumLanes() const
Returns the number of lanes.
Definition: NBEdge.h:343
EdgeBuildingStep
Current state of the edge within the building process.
Definition: NBEdge.h:89
NBEdge * myPossibleTurnDestination
The edge that would be the turn destination if there was one.
Definition: NBEdge.h:1280
void setAsMacroscopicConnector()
Marks this edge as a macroscopic connector.
Definition: NBEdge.h:841
PositionVector getCWBoundaryLine(const NBNode &n) const
get the outer boundary of this edge when going clock-wise around the given node
Definition: NBEdge.cpp:2007
bool hasLoadedLength() const
Returns whether a length was set explicitly.
Definition: NBEdge.h:419
friend class GNELane
Definition: NBEdge.h:77
EdgeBuildingStep getStep() const
The building step of this edge.
Definition: NBEdge.h:437
bool canMoveConnection(const Connection &con, unsigned int newFromLane) const
whether the connection can originate on newFromLane
Definition: NBEdge.cpp:1008
bool isTurningDirectionAt(const NBEdge *const edge) const
Returns whether the given edge is the opposite direction to this edge.
Definition: NBEdge.cpp:1858
SUMOReal myLaneWidth
This width of this edge&#39;s lanes.
Definition: NBEdge.h:1298
int myPriority
The priority of the edge.
Definition: NBEdge.h:1263
int getFirstNonPedestrianLaneIndex(int direction, bool exclusive=false) const
return the first lane with permissions other than SVC_PEDESTRIAN and 0
Definition: NBEdge.cpp:2416
void init(unsigned int noLanes, bool tryIgnoreNodePositions)
Initialization routines common to all constructors.
Definition: NBEdge.cpp:332
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:66
std::string origID
Definition: NBEdge.h:177
bool needsLaneSpecificOutput() const
whether at least one lane has values differing from the edges values
Definition: NBEdge.cpp:1494
Connection(int fromLane_, NBEdge *toEdge_, int toLane_)
Constructor.
Definition: NBEdge.h:154
ToEdgeConnectionsAdder & operator=(const ToEdgeConnectionsAdder &)
Invalidated assignment operator.
EdgeBuildingStep myStep
The building step.
Definition: NBEdge.h:1246
SUMOReal getAngleAtNodeToCenter(const NBNode *const node) const
Returns the angle of from the node shape center to where the edge meets the node shape.
Definition: NBEdge.cpp:1260
std::vector< Connection > myConnections
List of connections to following edges.
Definition: NBEdge.h:1271
void setLoadedLength(SUMOReal val)
Definition: NBEdge.cpp:2389
connections_fromlane_finder(int lane2find)
constructor
Definition: NBEdge.h:1446
The connection was given by the user.
Definition: NBEdge.h:114
An upper class for objects with additional parameters.
Definition: Parameterised.h:47
SUMOReal getSignalOffset() const
Returns the offset of a traffic signal from the end of this edge.
Definition: NBEdge.h:485
void removeFromConnections(NBEdge *toEdge, int fromLane=-1, int toLane=-1, bool tryLater=false)
Removes the specified connection(s)
Definition: NBEdge.cpp:893
connections_toedgelane_finder & operator=(const connections_toedgelane_finder &s)
invalidated assignment operator
SUMOReal getEndOffset() const
Returns the offset to the destination node.
Definition: NBEdge.h:474
bool myAmInnerEdge
Information whether this is a junction-inner edge.
Definition: NBEdge.h:1309
Base class for objects which have an id.
Definition: Named.h:45
bool recheckLanes()
Definition: NBEdge.cpp:1546
int getJunctionPriority(const NBNode *const node) const
Returns the junction priority (normalised for the node currently build)
Definition: NBEdge.cpp:1228
SUMOReal myLoadedLength
An optional length to use (-1 if not valid)
Definition: NBEdge.h:1306
std::string origID
An original ID, if given (.
Definition: NBEdge.h:140
std::map< NBEdge *, std::vector< unsigned int > > myConnections
map of edges to this edge&#39;s lanes that reach them
Definition: NBEdge.h:1094
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
Definition: NBEdge.cpp:2374
SUMOReal getCrossingAngle(NBNode *node)
return the angle for computing pedestrian crossings at the given node
Definition: NBEdge.cpp:2433
void addRestrictedLane(SUMOReal width, SUMOVehicleClass vclass)
add a lane of the given width, restricted to the given class and shift existing connctions ...
Definition: NBEdge.cpp:2471
Lane(NBEdge *e)
Definition: NBEdge.h:124
void setTurningDestination(NBEdge *e, bool onlyPossible=false)
Sets the turing destination at the given edge.
Definition: NBEdge.cpp:1275
void addBikeLane(SUMOReal width)
add a bicycle lane of the given width and shift existing connctions
Definition: NBEdge.cpp:2465
bool addLane2LaneConnection(unsigned int fromLane, NBEdge *dest, unsigned int toLane, Lane2LaneInfoType type, bool mayUseSameDestination=false, bool mayDefinitelyPass=false, bool keepClear=true)
Adds a connection between the specified this edge&#39;s lane and an approached one.
Definition: NBEdge.cpp:670
void decLaneNo(unsigned int by, int dir=0)
Definition: NBEdge.cpp:2203
NBNode * getToNode() const
Returns the destination node of the edge.
Definition: NBEdge.h:367
#define sign(a)
Definition: polyfonts.c:68
std::vector< int > getConnectionLanes(NBEdge *currentOutgoing) const
Returns the list of lanes that may be used to reach the given edge.
Definition: NBEdge.cpp:851
void execute(const unsigned int lane, const unsigned int virtEdge)
executes a bresenham - step
Definition: NBEdge.cpp:86
void computeEdgeShape()
Recomputeds the lane shapes to terminate at the node shape For every lane the intersection with the f...
Definition: NBEdge.cpp:474
void disableConnection4TLS(int fromLane, NBEdge *toEdge, int toLane)
Definition: NBEdge.cpp:1997
PositionVector viaShape
Definition: NBEdge.h:186
SUMOReal getMaxLaneOffset()
Definition: NBEdge.cpp:1907
static const SUMOReal UNSPECIFIED_LOADED_LENGTH
no length override given
Definition: NBEdge.h:210
std::vector< NBEdge * > EdgeVector
Definition: NBCont.h:41
std::vector< unsigned int > * prepareEdgePriorities(const EdgeVector *outgoing)
Definition: NBEdge.cpp:1787
NBEdge * myEdge
the edge to compute the relative angle of
Definition: NBEdge.h:1481
SUMOReal myLength
The length of the edge.
Definition: NBEdge.h:1255
void setPreferredVehicleClass(SVCPermissions permissions, int lane=-1)
Definition: NBEdge.cpp:2360
const PositionVector & getGeometry() const
Returns the geometry of the edge.
Definition: NBEdge.h:519
The edge has been loaded and connections shall not be added.
Definition: NBEdge.h:91
std::vector< Connection > myConnectionsToDelete
List of connections marked for delayed removal.
Definition: NBEdge.h:1275
bool isMacroscopicConnector() const
Returns whether this edge was marked as a macroscopic connector.
Definition: NBEdge.h:849
PositionVector computeLaneShape(unsigned int lane, SUMOReal offset) const
Computes the shape for the given lane.
Definition: NBEdge.cpp:1333
connections_toedgelane_finder(NBEdge *const edge2find, int lane2find, int fromLane2find)
constructor
Definition: NBEdge.h:1396
void reduceGeometry(const SUMOReal minDist)
Removes points with a distance lesser than the given.
Definition: NBEdge.cpp:594
void setJunctionPriority(const NBNode *const node, int prio)
Sets the junction priority of the edge.
Definition: NBEdge.cpp:1238
void replaceInConnections(NBEdge *which, NBEdge *by, unsigned int laneOff)
Definition: NBEdge.cpp:932
const EdgeVector * getConnectedSorted()
Returns the list of outgoing edges without the turnaround sorted in clockwise direction.
Definition: NBEdge.cpp:802
NBEdge *const myEdge2Find
Definition: NBEdge.h:1431
void setIsInnerEdge()
Marks this edge being within an intersection.
Definition: NBEdge.h:856
void sortOutgoingConnectionsByIndex()
sorts the outgoing connections by their from-lane-index and their to-lane-index
Definition: NBEdge.cpp:871
std::string myType
The type of the edge.
Definition: NBEdge.h:1249
SUMOReal mySignalOffset
the offset of a traffic light signal from the end of this edge (-1 for None)
Definition: NBEdge.h:1331
LaneSpreadFunction
Numbers representing special SUMO-XML-attribute values Information how the edge&#39;s lateral offset shal...
void append(NBEdge *continuation)
Definition: NBEdge.cpp:2114
unsigned int tlLinkNo
The index of this connection within the controlling traffic light.
Definition: NBEdge.h:170
connections_finder & operator=(const connections_finder &s)
invalidated assignment operator
SUMOReal getLaneSpeed(unsigned int lane) const
Definition: NBEdge.cpp:1284
void shiftToLanesToEdge(NBEdge *to, unsigned int laneOff)
modifify the toLane for all connections to the given edge
Definition: NBEdge.cpp:2505
NBNode * tryGetNodeAtPosition(SUMOReal pos, SUMOReal tolerance=5.0) const
Returns the node at the given edges length (using an epsilon) When no node is existing at the given p...
Definition: NBEdge.cpp:1871
The connection was computed.
Definition: NBEdge.h:112
LaneSpreadFunction getLaneSpreadFunction() const
Returns how this edge&#39;s lanes&#39; lateral offset is computed.
Definition: NBEdge.h:599
SUMOReal myStartAngle
The angles of the edge.
Definition: NBEdge.h:1258
SUMOReal getTotalAngle() const
get the angle as measure from the start to the end of this edge
Definition: NBEdge.h:395
Represents a single node (junction) during network building.
Definition: NBNode.h:75
void dismissVehicleClassInformation()
Definition: NBEdge.cpp:2395
Lane & getLaneStruct(unsigned int lane)
Definition: NBEdge.h:1051
bool hasSignalisedConnectionTo(const NBEdge *const e) const
Definition: NBEdge.cpp:2139
Lanes to lanes - relationships are computed; no recheck is necessary/wished.
Definition: NBEdge.h:101
bool hasLaneSpecificWidth() const
whether lanes differ in width
Definition: NBEdge.cpp:1461
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
void setEndOffset(int lane, SUMOReal offset)
set lane specific end-offset (negative lane implies set for all lanes)
Definition: NBEdge.cpp:2314
Direction
enum of possible directions
Definition: NBEdge.h:1134
#define SUMOReal
Definition: config.h:215
bool isNearEnough2BeJoined2(NBEdge *e, SUMOReal threshold) const
Definition: NBEdge.cpp:2172
void preferVehicleClass(int lane, SUMOVehicleClass vclass)
Definition: NBEdge.cpp:2262
void allowVehicleClass(int lane, SUMOVehicleClass vclass)
set allowed class for the given lane or for all lanes if -1 is given
Definition: NBEdge.cpp:2236
void addGeometryPoint(int index, const Position &p)
Adds a further geometry point.
Definition: NBEdge.cpp:543
connections_fromlane_finder & operator=(const connections_fromlane_finder &s)
invalidated assignment operator
void computeAngle()
computes the angle of this edge and stores it in myAngle
Definition: NBEdge.cpp:1395
SUMOReal getSpeed() const
Returns the speed allowed on this edge.
Definition: NBEdge.h:427
Container for nodes during the netbuilding process.
Definition: NBNodeCont.h:64
SUMOReal getStartAngle() const
Returns the angle at the start of the edge The angle is computed in computeAngle() ...
Definition: NBEdge.h:376
bool computeEdge2Edges(bool noLeftMovers)
computes the edge (step1: computation of approached edges)
Definition: NBEdge.cpp:1501
unsigned int internalLaneIndex
The lane index of this internal lane within the internal edge.
Definition: NBEdge.h:192
void setLaneSpreadFunction(LaneSpreadFunction spread)
(Re)sets how the lanes lateral offset shall be computed
Definition: NBEdge.cpp:537
bool operator()(const Connection &c) const
Definition: NBEdge.h:1425
NBEdge(const std::string &id, NBNode *from, NBNode *to, std::string type, SUMOReal speed, unsigned int nolanes, int priority, SUMOReal width, SUMOReal offset, const std::string &streetName="", LaneSpreadFunction spread=LANESPREAD_RIGHT)
Constructor.
Definition: NBEdge.cpp:184
Lanes to edges - relationships are computed/loaded.
Definition: NBEdge.h:97
std::string myStreetName
The street name (or whatever arbitrary string you wish to attach)
Definition: NBEdge.h:1324
const std::string & getStreetName() const
Returns the street name of this edge.
Definition: NBEdge.h:461
const std::vector< Connection > & getConnections() const
Returns the connections.
Definition: NBEdge.h:751
NBNode * myFrom
The source and the destination node.
Definition: NBEdge.h:1252
bool expandableBy(NBEdge *possContinuation) const
Definition: NBEdge.cpp:2043
NBEdge * getTurnDestination(bool possibleDestination=false) const
Definition: NBEdge.cpp:2150
~MainDirections()
destructor
Definition: NBEdge.cpp:154
void shiftPositionAtNode(NBNode *node, NBEdge *opposite)
shift geometry at the given node to avoid overlap
Definition: NBEdge.cpp:2516
bool operator()(const Connection &c) const
Definition: NBEdge.h:1448
void disallowVehicleClass(int lane, SUMOVehicleClass vclass)
set disallowed class for the given lane or for all lanes if -1 is given
Definition: NBEdge.cpp:2249
MainDirections(const EdgeVector &outgoing, NBEdge *parent, NBNode *to)
constructor
Definition: NBEdge.cpp:117
SUMOReal width
This lane&#39;s width.
Definition: NBEdge.h:138
void copyConnectionsFrom(NBEdge *src)
Definition: NBEdge.cpp:1001
void reinit(NBNode *from, NBNode *to, const std::string &type, SUMOReal speed, unsigned int nolanes, int priority, PositionVector geom, SUMOReal width, SUMOReal offset, const std::string &streetName, LaneSpreadFunction spread=LANESPREAD_RIGHT, bool tryIgnoreNodePositions=false)
Resets initial values.
Definition: NBEdge.cpp:264
static const SUMOReal ANGLE_LOOKAHEAD
the distance at which to take the default angle
Definition: NBEdge.h:214
SUMOReal getLength() const
Returns the computed length of the edge.
Definition: NBEdge.h:402
SUMOReal getAngleAtNode(const NBNode *const node) const
Returns the angle of the edge&#39;s geometry at the given node.
Definition: NBEdge.cpp:1248
NBNode * getFromNode() const
Returns the origin node of the edge.
Definition: NBEdge.h:359
bool splitGeometry(NBEdgeCont &ec, NBNodeCont &nc)
Splits this edge at geometry points.
Definition: NBEdge.cpp:549