64 #include <osg/Geometry> 75 MSEdge*
const edge,
int numericalID,
78 MSLane(id, maxSpeed, length, edge, numericalID, shape, width, permissions, index, isRampAccel),
89 int e = (int)
myShape.size() - 1;
90 for (
int i = 0; i < e; ++i) {
113 const MSLane::VehCont::iterator& at,
200 int noLinks = (int)
myLinks.size();
215 double w =
myWidth / (double) noLinks;
218 for (
int i = noLinks; --i >= 0;) {
219 double x2 = x1 - (double)(w / 2.);
228 int noLinks = (int)
myLinks.size();
245 double w =
myWidth / (double) noLinks;
248 for (
int i = noLinks; --i >= 0;) {
249 double x2 = x1 - (double)(w / 2.);
262 int noLinks = (int)
myLinks.size();
277 double w =
myWidth / (double) noLinks;
280 for (
int i = 0; i < noLinks; ++i) {
292 const double rot =
RAD2DEG(atan2((end.
x() - f.
x()), (f.
y() - end.
y())));
296 glTranslated(end.
x(), end.
y(), 0);
297 glRotated(rot, 0, 0, 1);
307 glTranslated(end.
x(), end.
y(), 0);
308 glRotated(rot, 0, 0, 1);
352 const double rot =
RAD2DEG(atan2((end.
x() - f.
x()), (f.
y() - end.
y())));
355 glTranslated(end.
x(), end.
y(), 0);
356 glRotated(rot, 0, 0, 1);
360 for (std::vector<MSLink*>::const_iterator i =
myLinks.begin(); i !=
myLinks.end(); ++i) {
413 for (std::vector<MSLink*>::const_iterator i =
myLinks.begin(); i !=
myLinks.end(); ++i) {
414 const MSLane* connected = (*i)->getLane();
415 if (connected == 0) {
422 glVertex2d(p1.
x(), p1.
y());
423 glVertex2d(p2.
x(), p2.
y());
437 bool mustDrawMarkings =
false;
446 if (isCrossing || isWalkingArea) {
451 glTranslated(0, 0,
getType() - 0.2);
459 const std::vector<RGBColor>& segmentColors =
static_cast<const GUIEdge*
>(
myEdge)->getSegmentColors();
460 if (segmentColors.size() > 0) {
463 for (
int ii = 0; ii < (int)
myShape.size() - 1; ++ii) {
470 glGetFloatv(GL_CURRENT_COLOR, color);
478 if (s.
scale * exaggeration < 1.) {
489 const double halfRailWidth = 0.725 * exaggeration;
496 glTranslated(0, 0, .1);
499 drawCrossties(0.3 * exaggeration, 1 * exaggeration, 1 * exaggeration);
500 }
else if (isCrossing) {
502 glTranslated(0, 0, .2);
504 glTranslated(0, 0, -.2);
506 }
else if (isWalkingArea) {
508 glTranslated(0, 0, .2);
509 if (s.
scale * exaggeration < 20.) {
514 glTranslated(0, 0, -.2);
515 #ifdef GUILane_DEBUG_DRAW_WALKING_AREA_VERTICES 522 const int cornerDetail = drawDetails && !isInternal ? (int)(s.
scale * exaggeration) : 0;
523 const double offset = halfWidth *
MAX2(0., (exaggeration - 1));
530 #ifdef GUILane_DEBUG_DRAW_VERTICES 533 #ifdef GUILane_DEBUG_DRAW_FOE_INTERSECTIONS 543 glTranslated(0, 0, .5);
565 glColor3d(0.3, 0.3, 0.3);
569 glTranslated(0, 0, .1);
597 for (MSLane::VehCont::const_iterator v = vehicles.begin(); v != vehicles.end(); ++v) {
598 if ((*v)->getLane() ==
this) {
621 int e = (int)
getShape().size() - 1;
622 for (
int i = 0; i < e; ++i) {
627 const double length =
MIN2((
double)3, myShapeLengths[i] - t);
630 glVertex2d(-mw, -t - length);
653 int e = (int)
getShape().size() - 1;
655 for (
int i = 0; i < e; ++i) {
661 for (
int side = -1; side <= 1; side += 2) {
663 glVertex2d(side * mw, -t);
664 glVertex2d(side * mw, -t - 0.35);
678 glTranslated(0, 0, 0.1);
679 int e = (int)
getShape().size() - 1;
680 for (
int i = 0; i < e; ++i) {
686 glVertex2d(-halfWidth, -t);
687 glVertex2d(-halfWidth, -t - length);
688 glVertex2d(halfWidth, -t - length);
689 glVertex2d(halfWidth, -t);
702 int e = (int)
getShape().size() - 1;
703 for (
int i = 0; i < e; ++i) {
709 glBegin(GL_TRIANGLES);
710 glVertex2d(0, -t - length);
724 glColor3d(1.0, 0.3, 0.3);
725 const double orthoLength = 0.5;
727 const std::vector<const MSLane*>& foeLanes = link->
getFoeLanes();
729 if (foeLanes.size() == lengthsBehind.size()) {
730 for (
int i = 0; i < (int)foeLanes.size(); ++i) {
731 const MSLane* l = foeLanes[i];
734 if (ortho.
length() < orthoLength) {
760 new FXMenuCommand(ret, (
"pos: " +
toString(pos) +
" height: " +
toString(height)).c_str(), 0, 0, 0);
761 new FXMenuSeparator(ret);
763 new FXMenuSeparator(ret);
766 new FXMenuCommand(ret,
"Reopen lane", 0, &parent,
MID_CLOSE_LANE);
767 new FXMenuCommand(ret,
"Reopen edge", 0, &parent,
MID_CLOSE_EDGE);
769 new FXMenuCommand(ret,
"Reopen lane (override rerouter)", 0, &parent,
MID_CLOSE_LANE);
770 new FXMenuCommand(ret,
"Reopen edge (override rerouter)", 0, &parent,
MID_CLOSE_EDGE);
829 const std::vector<double>&
835 const std::vector<double>&
894 switch (activeScheme) {
923 switch (activeScheme) {
925 for (PositionVector::const_iterator ii =
myShape.begin(); ii !=
myShape.end() - 1; ++ii) {
930 for (
int ii = 1; ii < (int)
myShape.size(); ++ii) {
943 switch (activeScheme) {
1048 switch (activeScheme) {
1132 osg::Vec4ubArray* colors =
dynamic_cast<osg::Vec4ubArray*
>(myGeom->getColorArray());
1134 myGeom->setColorArray(colors);
1149 if (rebuildAllowed) {
1159 const double slength =
myLength / no;
1162 for (
int i = 0; i < no; ++i) {
std::vector< int > myShapeSegments
the meso segment index for each geometry segment
const std::vector< double > & getShapeRotations() const
The link is a partial left direction.
The link has green light, may pass.
std::string getVehicleClassNames(SVCPermissions permissions, bool expand)
Returns the ids of the given classes, divided using a ' '.
static double gLateralResolution
SVCPermissions myPermissions
The vClass permissions for this lane.
double z() const
Returns the z-position.
void drawLane2LaneConnections() const
std::vector< RGBColor > myShapeColors
The color of the shape parts (cached)
VehCont myVehicles
The lane's vehicles. This container holds all vehicles that have their front (longitudinally) and the...
double getSpeedLimit() const
Returns the lane's maximum allowed speed.
MSEdge & getEdge() const
Returns the lane's edge.
bool lefthand() const
return whether the network was built for lefthand traffic
double getColorValue(int activeScheme) const
gets the color value according to the current scheme index
double getHarmonoise_NoiseEmissions() const
Returns the sum of last step noise emissions.
double getWidth() const
Returns the lane's width.
Representation of a vehicle in the micro simulation.
double scale
information about a lane's width (temporary, used for a single view)
void resetPermissions(long transientID)
double laneWidthExaggeration
The lane exaggeration (upscale thickness)
void closeBuilding(const Parameterised *p=0)
Closes the building of the table.
bool retrieveExistingTravelTime(const MSEdge *const e, const double t, double &value) const
Returns a travel time for an edge and time if stored.
double distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
void setColor(const GUIVisualizationSettings &s) const
sets the color according to the currente settings
static void drawBoxLines(const PositionVector &geom, const std::vector< double > &rots, const std::vector< double > &lengths, double width, int cornerDetail=0, double offset=0)
Draws thick lines.
void resetPartialOccupation(MSVehicle *v)
Removes the information about a vehicle lapping into this lane.
virtual void removeParking(MSVehicle *veh)
remove parking vehicle. This must be syncrhonized when running with GUI
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
void drawLinkRules(const GUIVisualizationSettings &s, const GUINet &net) const
static const long CHANGE_PERMISSIONS_GUI
double getBruttoOccupancy() const
Returns the brutto (including minGaps) occupancy of this lane during the last step.
double getCOEmissions() const
Returns the sum of last step CO emissions.
const std::vector< MSLane * > & getLanes() const
Returns this edge's lanes.
bool isTazConnector() const
static void drawTextAtEnd(const std::string &text, const PositionVector &shape, double x, double size, RGBColor color)
draw text and the end of shape
static RGBColor fromHSV(double h, double s, double v)
Converts the given hsv-triplet to rgb.
double getStoredEdgeTravelTime() const
Returns the stored traveltime for the edge of this lane.
double nearest_offset_to_point2D(const Position &p, bool perpendicular=true) const
return the nearest offest to point 2D
void closeTraffic(bool rebuildAllowed=true)
close this lane for traffic
int getLinkTLID(MSLink *link) const
GUIColorer laneColorer
The lane colorer.
double x() const
Returns the x-position.
The link has green light, has to brake.
double getPMxEmissions() const
Returns the sum of last step PMx emissions.
Stores the information about how to visualize structures.
double getNettoOccupancy() const
Returns the netto (excluding minGaps) occupancy of this lane during the last step (including minGaps)...
static void debugVertices(const PositionVector &shape, double size, double layer=256)
draw vertex numbers for the given shape (in a random color)
const double SUMO_const_laneWidth
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
PositionVector splitAtSegments(const PositionVector &shape)
add intermediate points at segment borders
void drawMarkings(const GUIVisualizationSettings &s, double scale) const
draw lane borders and white markings
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
int myIndex
The lane index.
virtual bool integrateNewVehicle(SUMOTime t)
Insert buffered vehicle into the real lane.
bool isWalkingArea() const
return whether this edge is walking area
bool showRails
Information whether rails shall be drawn.
bool setFunctionalColor(int activeScheme) const
sets the color according to the current scheme index and some lane function
The link is a 180 degree turn.
Copy edge name (for lanes only)
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
Notification
Definition of a vehicle state.
virtual MSVehicle * removeVehicle(MSVehicle *remVehicle, MSMoveReminder::Notification notification, bool notify=true)
const Position geometryPositionAtOffset(double offset, double lateralOffset=0) const
const std::string & getStreetName() const
Returns the street name of the edge.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
double firstWaitingTime() const
double getLength() const
Returns the lane's length.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
static void drawFilledPoly(const PositionVector &v, bool close)
Draws a filled polygon described by the list of points.
bool showLaneDirection
Whether to show direction indicators for lanes.
bool laneShowBorders
Information whether lane borders shall be drawn.
This is an uncontrolled, right-before-left link.
const std::vector< const MSLane * > & getFoeLanes() const
double getRoutingSpeed() const
Returns the averaged speed used by the routing device.
std::map< long, SVCPermissions > myPermissionChanges
const double SUMO_const_laneOffset
PositionVector getOrthogonal(const Position &p, double extend, bool before, double length=1.0) const
return orthogonal through p (extending this vector if necessary)
void drawLinkRule(const GUIVisualizationSettings &s, const GUINet &net, MSLink *link, const PositionVector &shape, double x1, double x2) const
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
double getScaleValue(int activeScheme) const
gets the scaling value according to the current scheme index
bool isRailway(SVCPermissions permissions)
Returns whether an edge with the given permission is a railway edge.
bool showLinkRules
Information whether link rules (colored bars) shall be drawn.
double getLoadedEdgeWeight() const
Returns the loaded weight (effort) for the edge of this lane.
A storage for edge travel times and efforts.
The link is controlled by a tls which is off, not blinking, may pass.
virtual double setPartialOccupation(MSVehicle *v)
Sets the information about a vehicle lapping into this lane.
void buildPositionCopyEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to copy the cursor position if geo projection is used, also builds an entry for copying the geo-position.
GUIGlID getGlID() const
Returns the numerical id of the object.
bool retrieveExistingEffort(const MSEdge *const e, const double t, double &value) const
Returns an effort for an edge and time if stored.
double getNOxEmissions() const
Returns the sum of last step NOx emissions.
bool integrateNewVehicle(SUMOTime t)
A class that stores a 2D geometrical boundary.
bool setMultiColor(const GUIColorer &c) const
sets multiple colors according to the current scheme index and some lane function ...
std::vector< double > myShapeLengths
The lengths of the shape parts.
The link is a (hard) left direction.
PositionVector myShape
The shape of the lane.
std::set< const MSVehicle * > myParkingVehicles
static OptionsCont & getOptions()
Retrieves the options.
void drawBikeMarkings() const
bike lane markings on top of an intersection
GUILane(const std::string &id, double maxSpeed, double length, MSEdge *const edge, int numericalID, const PositionVector &shape, double width, SVCPermissions permissions, int index, bool isRampAccel)
Constructor.
bool isSelected() const
whether this lane is selected in the GUI
PositionVector reverse() const
reverse position vector
const std::vector< double > & getShapeLengths() const
LinkDirection
The different directions a link between two lanes may take (or a stream between two edges)...
unsigned char blue() const
Returns the blue-amount of the color.
The link is a straight direction.
virtual void detectCollisions(SUMOTime timestep, const std::string &stage)
Check if vehicles are too close.
static void drawFilledPolyTesselated(const PositionVector &v, bool close)
Draws a filled polygon described by the list of points.
int getIndex() const
Returns the respond index (for visualization)
A road/street connecting two junctions (gui-version)
A road/street connecting two junctions.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
static double naviDegree(const double angle)
void rebuildAllowedLanes()
double myLength
Lane length [m].
void removeParking(MSVehicle *veh)
remove parking vehicle
double getFuelConsumption() const
Returns the sum of last step fuel consumption.
MSLane * getLogicalPredecessorLane() const
get the most likely precedecessor lane (sorted using by_connections_to_sorter). The result is cached ...
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
virtual void incorporateVehicle(MSVehicle *veh, double pos, double speed, double posLat, const MSLane::VehCont::iterator &at, MSMoveReminder::Notification notification=MSMoveReminder::NOTIFICATION_DEPARTED)
Inserts the vehicle into this lane, and informs it about entering the network.
double getExaggeration(const GUIVisualizationSettings &s, double factor=20) const
return the drawing size including exaggeration and constantSize values
void drawLinkNo(const GUIVisualizationSettings &s) const
helper methods
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
virtual void resetPartialOccupation(MSVehicle *v)
Removes the information about a vehicle lapping into this lane.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
bool executeMovements(SUMOTime t, std::vector< MSLane * > &into)
MFXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
double minSize
The minimum size to draw this object.
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
This is an uncontrolled, minor link, has to brake.
A point in 2D or 3D with translation and scaling methods.
void planMovements(const SUMOTime t)
int indexOfClosest(const Position &p) const
index of the closest position to p
double getElectricityConsumption() const
Returns the sum of last step electricity consumption.
bool isWaterway(SVCPermissions permissions)
Returns whether an edge with the given permission is a waterway edge.
unsigned char alpha() const
Returns the alpha-amount of the color.
bool drawAsWaterway(const GUIVisualizationSettings &s) const
whether to draw this lane as a waterway
bool showSublanes
Whether to show sublane boundaries.
double y() const
Returns the y-position.
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic, in MSLink and GNEInternalLane.
const T getColor(const double value) const
double length() const
Returns the length.
int getLinkTLIndex(MSLink *link) const
GUIVisualizationTextSettings drawLinkTLIndex
The link is a (hard) right direction.
bool isLaneOrEdgeSelected() const
whether this lane or its parent edge is selected in the GUI
const MSEdge * getMyOppositeSuperposableEdge() const
return opposite superposable/congruent edge, if it exist and 0 else
Position positionAtOffset2D(double pos, double lateralOffset=0) const
Returns the position at the given length.
void drawDirectionIndicators() const
direction indicators for lanes
Boundary & grow(double by)
extends the boundary by the given amount
MSVehicle * removeVehicle(MSVehicle *remVehicle, MSMoveReminder::Notification notification, bool notify)
int insertAtClosest(const Position &p)
inserts p between the two closest positions and returns the insertion index
static void drawLine(const Position &beg, double rot, double visLength)
Draws a thin line.
virtual void swapAfterLaneChange(SUMOTime t)
moves myTmpVehicles int myVehicles after a lane change procedure
const std::vector< std::pair< double, double > > & getLengthsBehindCrossing() const
int getIndex() const
Returns the lane's index.
bool isInternal() const
return whether this edge is an internal edge
double laneMinSize
The minimum visual lane width for drawing.
GUIScaler edgeScaler
The mesoscopic edge scaler.
The link is a partial right direction.
const std::string & getEdgeType() const
Returns the type of the edge.
std::vector< MSVehicle * > VehCont
Container for vehicles.
double distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimension
vehicle is a passenger car (a "normal" car)
double getMeanSpeed() const
Returns the mean speed on this lane.
void unlock()
release mutex lock
void swapAfterLaneChange(SUMOTime t)
moves myTmpVehicles int myVehicles after a lane change procedure
void setPermissions(SVCPermissions permissions, long transientID)
Sets the permissions to the given value. If a transientID is given, the permissions are recored as te...
void extrapolate(const double val, const bool onlyFirst=false, const bool onlyLast=false)
extrapolate position vector
void drawCrossties(double length, double spacing, double halfWidth) const
draw crossties for railroads or pedestrian crossings
bool showLinkDecals
Information whether link textures (arrows) shall be drawn.
bool havePriority() const
Returns whether this link is a major link.
void drawTLSLinkNo(const GUIVisualizationSettings &s, const GUINet &net) const
A MSNet extended by some values for usage within the gui.
int getNumericalID() const
Returns the numerical id of the edge.
Position positionAtOffset(double pos, double lateralOffset=0) const
Returns the position at the given length.
int getPriority() const
Returns the priority of the edge.
The link has yellow light, may pass.
static MSLink * getConnectingLink(const MSLane &from, const MSLane &to)
Returns the link connecting both lanes Both lanes have to be non-internal; 0 may be returned if no co...
MSInsertionControl & getInsertionControl()
Returns the insertion control.
The link is controlled by a tls which is off and blinks, has to brake.
A mutex encapsulator which locks/unlocks the given mutex on construction/destruction, respectively.
MSEdge *const myEdge
The lane's edge, for routing only.
const MSTrafficLightLogic * getTLLogic() const
Returns the TLS index.
void detectCollisions(SUMOTime timestep, const std::string &stage)
The link has red light (must brake)
double getScaleValue(int activeScheme) const
gets the scaling value according to the current scheme index
This is an uncontrolled, major link, may pass.
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
bool drawAsRailway(const GUIVisualizationSettings &s) const
whether to draw this lane as a railway
std::vector< double > myShapeRotations
The rotations of the shape parts.
bool drawCrossingsAndWalkingareas
whether crosings and walkingareas shall be drawn
bool myAmClosed
state for dynamic lane closings
const PositionVector & getShape() const
Returns this lane's shape.
const VehCont & getVehiclesSecure() const
Returns the vehicles container; locks it for microsimulation.
The link is a 180 degree turn (left-hand network)
bool showLane2Lane
Information whether lane-to-lane arrows shall be drawn.
bool knowsEffort(const MSEdge *const e) const
Returns the information whether any effort is known for the given edge.
LinkState getState() const
Returns the current state of the link.
static void drawTriangleAtEnd(const Position &p1, const Position &p2, double tLength, double tWidth)
Draws a triangle at the end of the given line.
unsigned char green() const
Returns the green-amount of the color.
bool isCrossing() const
return whether this edge is a pedestrian crossing
GUIVisualizationSizeSettings vehicleSize
double setPartialOccupation(MSVehicle *v)
Sets the information about a vehicle lapping into this lane.
double getHCEmissions() const
Returns the sum of last step HC emissions.
const MSLinkCont & getLinkCont() const
returns the container with all links !!!
double getCO2Emissions() const
Returns the sum of last step CO2 emissions.
const double myLengthGeometryFactor
precomputed myShape.length / myLength
double interpolateGeometryPosToLanePos(double geometryPos) const
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
The link has yellow light, has to brake anyway.
static int numSegmentsFor(const double length, const double slength)
Compute number of segments per edge (best value stay close to the configured segment length) ...
void add(double x, double y, double z=0)
Makes the boundary include the given coordinate.
bool knowsTravelTime(const MSEdge *const e) const
Returns the information whether any travel time is known for the given edge.
double getEdgeLaneNumber() const
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
Position getPositionInformation() const
Returns the cursor's x/y position within the network.
double myHalfLaneWidth
Half of lane width, for speed-up.
bool drawForSelecting
whether drawing is performed for the purpose of selecting objects
virtual bool executeMovements(SUMOTime t, std::vector< MSLane * > &lanesWithVehiclesToIntegrate)
Executes planned vehicle movements with regards to right-of-way.
void debugDrawFoeIntersections() const
draw intersection positions of foe internal lanes with this one
GUIScaler laneScaler
The lane scaler.
double myQuarterLaneWidth
Quarter of lane width, for speed-up.
double myMaxSpeed
Lane-wide speedlimit [m/s].
unsigned char red() const
Returns the red-amount of the color.
void mkItem(const char *name, bool dynamic, ValueSource< unsigned > *src)
Adds a row which obtains its value from an unsigned-ValueSource.
GUISelectedStorage gSelected
A global holder of selected objects.
Representation of a lane in the micro simulation.
A window containing a gl-object's parameter.
static const RGBColor & getLinkColor(const LinkState &ls)
The link has red light (must brake) but indicates upcoming green.
GUIVisualizationTextSettings drawLinkJunctionIndex
int getPendingEmits(const MSLane *lane)
return the number of pending emits for the given lane
void releaseVehicles() const
Allows to use the container for microsimulation again.
const double myWidth
Lane width [m].
virtual void incorporateVehicle(MSVehicle *veh, double pos, double speed, double posLat, const MSLane::VehCont::iterator &at, MSMoveReminder::Notification notification=MSMoveReminder::NOTIFICATION_DEPARTED)
Inserts the vehicle into this lane, and informs it about entering the network.
double beginEndAngle() const
returns the angle in radians of the line connecting the first and the last position ...
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
virtual void planMovements(const SUMOTime t)
Compute safe velocities for all vehicles based on positions and speeds from the last time step...
The link has no direction (is a dead end link)
const PositionVector & getShape() const
MSEdgeWeightsStorage & getWeightsStorage()
Returns the net's internal edge travel times/efforts container.
static RGBColor getColor()
gets the gl-color
A MSVehicle extended by some values for usage within the gui.