69 #ifdef CHECK_MEMORY_LEAKS 71 #endif // CHECK_MEMORY_LEAKS 86 #pragma warning(disable: 4355) 90 MSVehicle(pars, route, type, speedFactor),
94 #pragma warning(default: 4355) 111 ret->
mkItem(
"shadow lane [id]",
false, shadowLane == 0 ?
"" : shadowLane->
getID());
113 ret->
mkItem(
"position [m]",
true,
115 ret->
mkItem(
"lateral offset [m]",
true,
117 ret->
mkItem(
"speed [m/s]",
true,
119 ret->
mkItem(
"angle [degree]",
true,
121 ret->
mkItem(
"slope [degree]",
true,
126 ret->
mkItem(
"time gap on lane [s]",
true,
128 ret->
mkItem(
"waiting time [s]",
true,
132 ret->
mkItem(
"time loss [s]",
true,
134 ret->
mkItem(
"impatience",
true,
136 ret->
mkItem(
"last lane change [s]",
true,
151 ret->
mkItem(
"CO2 [mg/s]",
true,
153 ret->
mkItem(
"CO [mg/s]",
true,
155 ret->
mkItem(
"HC [mg/s]",
true,
157 ret->
mkItem(
"NOx [mg/s]",
true,
159 ret->
mkItem(
"PMx [mg/s]",
true,
161 ret->
mkItem(
"fuel [ml/s]",
true,
163 ret->
mkItem(
"electricity [Wh/s]",
true,
165 ret->
mkItem(
"noise (Harmonoise) [dB]",
true,
167 std::ostringstream str;
168 for (std::vector<MSDevice*>::const_iterator i =
myDevices.begin(); i !=
myDevices.end(); ++i) {
172 str << (*i)->getID().substr(0, (*i)->getID().find(
getID()));
174 ret->
mkItem(
"devices",
false, str.str());
175 ret->
mkItem(
"persons",
true,
177 ret->
mkItem(
"containers",
true,
193 ret->
mkItem(
"Type Information:",
false,
"");
222 for (std::vector<MSTransportable*>::const_iterator i = ps.begin(); i != ps.end(); ++i) {
231 int containerIndex = 0;
232 for (std::vector<MSTransportable*>::const_iterator i = cs.begin(); i != cs.end(); ++i) {
234 assert(container != 0);
239 #ifdef DRAW_BOUNDING_BOX 244 boundingBox.push_back(boundingBox.front());
248 glColor3d(0.5, .8, 0);
260 if ((*i).myLink == 0) {
263 MSLink* link = (*i).myLink;
267 if ((*i).mySetRequest) {
272 const SUMOTime leaveTime = (*i).myLink->getLeaveTime(
309 #define BLINKER_POS_FRONT .5 310 #define BLINKER_POS_BACK .5 314 glColor3d(1.f, .8f, 0);
350 glColor3f(1.f, .2f, 0);
353 glTranslated(0, length, -0.1);
370 glTranslated(0, 2.5, .5);
380 switch (activeScheme) {
432 std::vector<std::vector<MSVehicle::LaneQ> > bestLanes =
myBestLanes;
434 for (std::vector<std::vector<MSVehicle::LaneQ> >::iterator j = bestLanes.begin(); j != bestLanes.end(); ++j) {
435 std::vector<MSVehicle::LaneQ>& lanes = *j;
438 for (std::vector<MSVehicle::LaneQ>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
439 gmax =
MAX2((*i).length, gmax);
440 rmax =
MAX2((*i).occupation, rmax);
442 for (std::vector<MSVehicle::LaneQ>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
445 SUMOReal r = (*i).occupation / rmax;
447 SUMOReal width = 0.5 / (1 +
abs((*i).bestLaneOffset));
469 int bestLaneIndex = (&r ==
myRoute ? 0 : (int)bestLaneConts.
size());
470 for (; i != r.
end(); ++i) {
472 if (bestLaneIndex < (
int)bestLaneConts.size() && bestLaneConts[bestLaneIndex] != 0 && (*i) == &(bestLaneConts[bestLaneIndex]->getEdge())) {
473 lane =
static_cast<GUILane*
>(bestLaneConts[bestLaneIndex]);
476 const std::vector<MSLane*>* allowed = (*i)->allowedLanes(
getVClass());
477 if (allowed != 0 && allowed->size() != 0) {
478 lane =
static_cast<GUILane*
>((*allowed)[0]);
480 lane =
static_cast<GUILane*
>((*i)->getLanes()[0]);
504 defaultLength *= exaggeration;
505 if (exaggeration == 0) {
508 carriageGap *= exaggeration;
514 const SUMOReal xCornerCut = 0.3 * exaggeration;
515 const SUMOReal yCornerCut = 0.4 * exaggeration;
517 const int numCarriages = (int)(length / (defaultLength + carriageGap) + 0.5);
518 assert(numCarriages > 0);
519 const SUMOReal carriageLengthWithGap = length / numCarriages;
520 const SUMOReal carriageLength = carriageLengthWithGap - carriageGap;
523 int furtherIndex = 0;
526 int backFurtherIndex = furtherIndex;
532 if (requiredSeats > 0) {
538 for (
int i = 0; i < numCarriages; ++i) {
539 while (carriageOffset < 0) {
549 while (carriageBackOffset < 0) {
551 if (prev != backLane) {
555 carriageBackOffset = 0;
567 if (i >= firstPassengerCarriage) {
571 glTranslated(front.
x(), front.
y(),
getType());
572 glRotated(angle, 0, 0, 1);
574 glBegin(GL_TRIANGLE_FAN);
575 glVertex2d(-halfWidth + xCornerCut, 0);
576 glVertex2d(-halfWidth, yCornerCut);
577 glVertex2d(-halfWidth, drawnCarriageLength - yCornerCut);
578 glVertex2d(-halfWidth + xCornerCut, drawnCarriageLength);
579 glVertex2d(halfWidth - xCornerCut, drawnCarriageLength);
580 glVertex2d(halfWidth, drawnCarriageLength - yCornerCut);
581 glVertex2d(halfWidth, yCornerCut);
582 glVertex2d(halfWidth - xCornerCut, 0);
586 carriageOffset -= carriageLengthWithGap;
587 carriageBackOffset -= carriageLengthWithGap;
592 glTranslated(front.
x(), front.
y(),
getType());
593 glRotated(angle, 0, 0, 1);
609 if (requiredSeats <= 0) {
618 for (
SUMOReal p = 2; p <= length - 1; p += 1) {
634 std::string result =
"";
642 if (
myStops.front().triggered) {
643 result +=
", triggered";
644 }
else if (
myStops.front().containerTriggered) {
645 result +=
", containerTriggered";
661 std::vector<const SUMOVehicle*> blockingFoes;
662 std::vector<const MSPerson*> blockingPersons;
667 if (parallelLink != 0) {
676 for (std::vector<const SUMOVehicle*>::const_iterator it = blockingFoes.begin(); it != blockingFoes.end(); ++it) {
679 #ifdef HAVE_INTERNAL_LANES 681 for (MSLink::LinkLeaders::const_iterator it = linkLeaders.begin(); it != linkLeaders.end(); ++it) {
689 for (std::vector<const MSPerson*>::iterator it_p = blockingPersons.begin(); it_p != blockingPersons.end(); ++it_p) {
SUMOReal getExaggeration(const GUIVisualizationSettings &s, SUMOReal factor=20) const
return the drawing size including exaggeration and constantSize values
std::map< GUISUMOAbstractView *, int > myAdditionalVisualizations
Enabled visualisations, per view.
bool signalSet(int which) const
Returns whether the given signal is on.
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
void selectBlockingFoes() const
adds the blocking foes to the current selection
const MSVehicleType * myType
This Vehicle's type.
const std::vector< SUMOReal > & getShapeRotations() const
bool drawAction_drawCarriageClass(const GUIVisualizationSettings &s, SUMOVehicleShape guiShape, bool asImage) const
draws the given guiShape if it has distinct carriages/modules and returns true if so ...
Representation of a vehicle in the micro simulation.
SUMOVehicleClass getVehicleClass() const
Get this vehicle type's vehicle class.
std::vector< std::vector< LaneQ > > myBestLanes
SUMOReal getColorValue(int activeScheme) const
gets the color value according to the current scheme index
const MSCFModel & getCarFollowModel() const
Returns the vehicle's car following model definition.
std::vector< MSLane * > myFurtherLanes
The information into which lanes the vehicle laps into.
MSLink * getParallelLink(int direction) const
return the link that is parallel to this lane or 0
State myState
This Vehicles driving state (pos and speed)
SUMOReal getMaxSpeed() const
Returns the maximum speed.
DriveItemVector myLFLinkLanes
SUMOReal pos() const
Position of this state.
MFXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
SUMOVehicleClass getVClass() const
Returns the vehicle's access class.
SUMOReal getImpatience() const
Returns this vehicles impatience.
void drawBestLanes() const
Draws the vehicle's best lanes.
SUMOReal getLeaveSpeed() const
SUMOTime getWaitingTime() const
Returns the SUMOTime waited (speed was lesser than 0.1m/s)
Stores the information about how to visualize structures.
SUMOReal getLength() const
Returns the lane's length.
void select(GUIGlID id, bool update=true)
Adds the object with the given id.
render as a flexible city bus
SUMOReal getNaviDegree() const
return the current angle in navigational degrees
const Position & getSeatPosition(int personIndex) const
returns the seat position for the person with the given index
void drawAction_drawPersonsAndContainers(const GUIVisualizationSettings &s) const
int getShadowDirection() const
return the direction in which the current shadow lane lies
std::string time2string(SUMOTime t)
GUIVisualizationTextSettings vehicleName
SUMOReal getLength() const
Get vehicle's length [m].
MSDevice_Transportable * myPersonDevice
The passengers this vehicle may have.
SUMOReal getLastLaneChangeOffset() const
Returns the time since the last lane change in seconds.
int getNumberReroutes() const
Returns the number of new routes this vehicle got.
static void drawBoxLines(const PositionVector &geom, const std::vector< SUMOReal > &rots, const std::vector< SUMOReal > &lengths, SUMOReal width, int cornerDetail=0, SUMOReal offset=0)
Draws thick lines.
SUMOReal getHCEmissions() const
Returns HC emission of the current state.
SUMOReal getWidth() const
Returns the lane's width.
void drawOutsideNetwork(bool add)
register vehicle for drawing while outside the network
bool isSelected(GUIGlObjectType type, GUIGlID id)
Returns the information whether the object with the given type and id is selected.
const MSRoute * myRoute
This Vehicle's route.
static std::string getIDSecure(const T *obj, const std::string &fallBack="NULL")
get an identifier for Named-like object which may be Null
bool addAdditionalGLVisualisation(const GUIGlObject *const which)
Adds an object to call its additional visualisation method.
SUMOReal getCO2Emissions() const
Returns CO2 emission of the current state.
const std::map< std::string, std::string > & getMap() const
Returns the inner key/value map.
const std::vector< SUMOReal > & getShapeLengths() const
SUMOReal getPositionOnLane() const
Get the vehicle's position along the lane.
const SUMOVehicleParameter * myParameter
This Vehicle's parameter.
The base class for microscopic and mesoscopic vehicles.
const Position geometryPositionAtOffset(SUMOReal offset, SUMOReal lateralOffset=0) const
SUMOReal x() const
Returns the x-position.
Position positionAtOffset2D(SUMOReal pos, SUMOReal lateralOffset=0) const
Returns the position at the given length.
GUIGlID getGlID() const
Returns the numerical id of the object.
#define UNUSED_PARAMETER(x)
void drawAction_drawVehicleBlinker(SUMOReal length) const
bool removeAdditionalGLVisualisation(const GUIGlObject *const which)
Removes an object from the list of objects that show additional things.
The car-following model and parameter.
MSAbstractLaneChangeModel & getLaneChangeModel()
SUMOReal scale
information about a lane's width (temporary, used for a single view)
int getPersonCapacity() const
Get this vehicle type's person capacity.
std::string getStopInfo() const
retrieve information about the current stop state
Right blinker lights are switched on.
PositionVector mySeatPositions
positions of seats in the vehicle (updated at every drawing step)
SUMOReal getLateralPositionOnLane() const
Get the vehicle's lateral position on the lane.
Representation of a lane in the micro simulation (gui-version)
SUMOReal getElectricityConsumption() const
Returns electricity consumption of the current state.
int getContainerNumber() const
Returns the number of containers.
static void drawFilledCircle(SUMOReal width, int steps=8)
Draws a filled circle around (0,0)
const std::string & getID() const
Returns the id.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
bool drawAction_drawVehicleAsImage(const GUIVisualizationSettings &s, SUMOReal length=-1) const
bool opened(SUMOTime arrivalTime, SUMOReal arrivalSpeed, SUMOReal leaveSpeed, SUMOReal vehicleLength, SUMOReal impatience, SUMOReal decel, SUMOTime waitingTime, SUMOReal posLat=0, std::vector< const SUMOVehicle * > *collectFoes=0) const
Returns the information whether the link may be passed.
Left blinker lights are switched on.
GUISUMOAbstractView * getActiveView() const
get the active view or 0
GUIVehicle(SUMOVehicleParameter *pars, const MSRoute *route, const MSVehicleType *type, const SUMOReal speedFactor)
Constructor.
const SUMOVTypeParameter & getParameter() const
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
PositionVector getBoundingBox() const
get bounding rectangle
SUMOReal getMinGap() const
Get the free space in front of vehicles of this class.
const std::vector< MSLane * > & getBestLanesContinuation() const
Returns the best sequence of lanes to continue the route starting at myLane.
static GUIMainWindow * getInstance()
SUMOTime getDepartDelay() const
Returns the depart delay.
A point in 2D or 3D with translation and scaling methods.
int size() const
Returns the number of edges to pass.
std::list< Stop > myStops
The vehicle's list of stops.
ConstMSEdgeVector::const_iterator MSRouteIterator
MSLane * getPreviousLane(MSLane *current, int &furtherIndex) const
PositionVector getBoundingPoly() const
get bounding polygon
const std::vector< MSTransportable * > & getTransportables() const
Returns the list of transportables using this vehicle.
bool isStopped() const
Returns whether the vehicle is at a stop.
MSLane * myLane
The lane the vehicle is on.
Blinker lights on both sides are switched on.
void setPositionInVehicle(const Position &pos)
render as a (city) rail without locomotive
bool isLeader(const MSVehicle *ego, const MSVehicle *foe)
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.
std::vector< LinkLeader > LinkLeaders
A MSVehicle extended by some values for usage within the gui.
SUMOReal getTimeGapOnLane() const
Returns the time gap in seconds to the leader of the vehicle on the same lane.
SUMOReal getAccumulatedWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s) within the last millisecs...
A blue emergency light is on.
int getNumPassengers() const
return the number of passengers
static std::string getName(const SUMOEmissionClass c)
Checks whether the string describes a known vehicle class.
SUMOReal getMaxDecel() const
Get the vehicle type's maximum deceleration [m/s^2].
MSLane * getShadowLane() const
Returns the lane the vehicles shadow is on during continuous/sublane lane change. ...
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
bool isParking() const
Returns whether the vehicle is parking.
int getPersonNumber() const
Returns the number of persons.
SUMOReal getHarmonoise_NoiseEmissions() const
Returns noise emissions of the current state.
GUIParameterTableWindow * getTypeParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own type parameter window.
std::string line
The vehicle's line (mainly for public transport)
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
SUMOReal getNOxEmissions() const
Returns NOx emission of the current state.
void setPositionInVehicle(const Position &pos)
SUMOReal getPMxEmissions() const
Returns PMx emission of the current state.
SUMOReal getCOEmissions() const
Returns CO emission of the current state.
void computeSeats(const Position &front, const Position &back, int &requiredSeats) const
add seats to mySeatPositions and update requiredSeats
void unlock()
release mutex lock
SUMOReal getWidth() const
Get the width which vehicles of this class shall have when being drawn.
Structure representing possible vehicle parameter.
MSRouteIterator end() const
Returns the end of the list of edges to pass.
draw vehicle outside the road network
SUMOVehicleShape
Definition of vehicle classes to differ between different appearences.
SUMOReal getSlope() const
Returns the slope of the road at vehicle's position.
MSLane * getViaLaneOrLane() const
return the via lane if it exists and the lane otherwise
SUMOReal getAcceleration() const
Returns the vehicle's acceleration in m/s (this is computed as the last step's mean acceleration in c...
static void drawLinkItem(const Position &pos, SUMOTime arrivalTime, SUMOTime leaveTime, SUMOReal exagerate)
void drawAction_drawLinkItems(const GUIVisualizationSettings &s) const
SUMOReal y() const
Returns the y-position.
SUMOReal getFuelConsumption() const
Returns fuel consumption of the current state.
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
static SUMOReal gLateralResolution
SUMOReal getChosenSpeedFactor() const
Returns the precomputed factor by which the driver wants to be faster than the speed limit...
const std::string & getID() const
Returns the name of the vehicle type.
void drawAction_drawBlinker(double dir, SUMOReal length)
SUMOReal getSpeed() const
Returns the vehicle's current speed.
const SUMOVehicleParameter & getParameter() const
Returns the vehicle's parameter (including departure definition)
SUMOReal getWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s)
static SUMOTime gWaitingTimeMemory
length of memory for waiting times (in millisecs)
const PositionVector & getShape() const
Returns this lane's shape.
SUMOReal distanceTo2D(const Position &p2) const
returns the euclidean distance in the x-y-plane
static void drawLine(const Position &beg, SUMOReal rot, SUMOReal visLength)
Draws a thin line.
void drawAction_drawRailCarriages(const GUIVisualizationSettings &s, SUMOReal defaultLength, SUMOReal carriageGap, int firstPassengerCarriage, bool asImage) const
void move2side(SUMOReal amount)
move position vector to side using certain ammount
#define BLINKER_POS_FRONT
GUIVisualizationSizeSettings vehicleSize
SUMOReal getTimeLossSeconds() const
Returns the time loss in seconds.
int getContainerCapacity() const
Get this vehicle type's container capacity.
void drawRouteHelper(const MSRoute &r, SUMOReal exaggeration) const
Draws the route.
SUMOReal getVehicleMaxSpeed(const SUMOVehicle *const veh) const
Returns the lane's maximum speed, given a vehicle's speed limit adaptation.
SUMOEmissionClass getEmissionClass() const
Get this vehicle type's emission class.
MSLane * getLane() const
Returns the lane the vehicle is on.
static SUMOTime gLaneChangeDuration
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.
void closeBuilding()
Closes the building of the table.
Representation of a lane in the micro simulation.
std::vector< MSDevice * > myDevices
The devices this vehicle has.
A window containing a gl-object's parameter.
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
void drawAction_drawVehicleBlueLight() const
int getBestLaneOffset() const
MSRouteIterator begin() const
Returns the begin of the list of edges to pass.
MSDevice_Transportable * myContainerDevice
The containers this vehicle may have.
const std::string & getID() const
Returns the name of the vehicle.
int size() const
Return the number of passengers / containers.
const PositionVector & getShape() const
static RGBColor getColor()
gets the gl-color
void drawAction_drawVehicleBrakeLight(SUMOReal length, bool onlyOne=1) const
A MSVehicle extended by some values for usage within the gui.