37 #include <osg/ShapeDrawable>
38 #include <osgview/GUIOSGView.h>
68 #ifdef CHECK_MEMORY_LEAKS
70 #endif // CHECK_MEMORY_LEAKS
101 double
vehiclePoly_PassengerCarBody[] = { .5, 0, 0, 0, 0, .3, 0.08, .44, 0.25, .5, 0.95, .5, 1., .4, 1., -.4, 0.95, -.5, 0.25, -.5, 0.08, -.44, 0, -.3, 0, 0, -10000 };
102 double vehiclePoly_PassengerCarBodyFront[] = { 0.1, 0, 0.025, 0, 0.025, 0.25, 0.27, 0.4, 0.27, -.4, 0.025, -0.25, 0.025, 0, -10000 };
103 double vehiclePoly_PassengerFrontGlass[] = { 0.35, 0, 0.3, 0, 0.3, 0.4, 0.43, 0.3, 0.43, -0.3, 0.3, -0.4, 0.3, 0, -10000 };
104 double vehiclePoly_PassengerSedanRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.77, -.47, 0.67, -.37, 0.45, -.37, 0.34, -.47, -10000 };
105 double vehiclePoly_PassengerSedanLeftGlass[] = { 0.36, .43, 0.34, .47, 0.77, .47, 0.67, .37, 0.45, .37, 0.34, .47, -10000 };
106 double vehiclePoly_PassengerSedanBackGlass[] = { 0.80, 0, 0.70, 0, 0.70, 0.3, 0.83, 0.4, 0.83, -.4, 0.70, -.3, 0.70, 0, -10000 };
107 double vehiclePoly_PassengerHatchbackRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.94, -.47, 0.80, -.37, 0.45, -.37, 0.34, -.47, -10000 };
108 double vehiclePoly_PassengerHatchbackLeftGlass[] = { 0.36, .43, 0.34, .47, 0.94, .47, 0.80, .37, 0.45, .37, 0.34, .47, -10000 };
109 double vehiclePoly_PassengerHatchbackBackGlass[] = { 0.92, 0, 0.80, 0, 0.80, 0.3, 0.95, 0.4, 0.95, -.4, 0.80, -.3, 0.80, 0, -10000 };
110 double vehiclePoly_PassengerWagonRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.94, -.47, 0.87, -.37, 0.45, -.37, 0.34, -.47, -10000 };
111 double vehiclePoly_PassengerWagonLeftGlass[] = { 0.36, .43, 0.34, .47, 0.94, .47, 0.87, .37, 0.45, .37, 0.34, .47, -10000 };
112 double vehiclePoly_PassengerWagonBackGlass[] = { 0.92, 0, 0.90, 0, 0.90, 0.3, 0.95, 0.4, 0.95, -.4, 0.90, -.3, 0.90, 0, -10000 };
114 double vehiclePoly_PassengerVanBody[] = { .5, 0, 0, 0, 0, .4, 0.1, .5, 0.97, .5, 1., .47, 1., -.47, 0.97, -.5, 0.1, -.5, 0, -.4, 0, 0, -10000 };
115 double vehiclePoly_PassengerVanBodyFront[] = { 0.1, 0, 0.025, 0, 0.025, 0.25, 0.13, 0.4, 0.13, -.4, 0.025, -0.25, 0.025, 0, -10000 };
116 double vehiclePoly_PassengerVanFrontGlass[] = { 0.21, 0, 0.16, 0, 0.16, 0.4, 0.29, 0.3, 0.29, -0.3, 0.16, -0.4, 0.16, 0, -10000 };
117 double vehiclePoly_PassengerVanRightGlass[] = { 0.36, -.43, 0.20, -.47, 0.98, -.47, 0.91, -.37, 0.31, -.37, 0.20, -.47, -10000 };
118 double vehiclePoly_PassengerVanLeftGlass[] = { 0.36, .43, 0.20, .47, 0.98, .47, 0.91, .37, 0.31, .37, 0.20, .47, -10000 };
119 double vehiclePoly_PassengerVanBackGlass[] = { 0.95, 0, 0.94, 0, 0.94, 0.3, 0.98, 0.4, 0.98, -.4, 0.94, -.3, 0.94, 0, -10000 };
121 double vehiclePoly_DeliveryMediumRightGlass[] = { 0.21, -.43, 0.20, -.47, 0.38, -.47, 0.38, -.37, 0.31, -.37, 0.20, -.47, -10000 };
122 double vehiclePoly_DeliveryMediumLeftGlass[] = { 0.21, .43, 0.20, .47, 0.38, .47, 0.38, .37, 0.31, .37, 0.20, .47, -10000 };
124 double vehiclePoly_TransportBody[] = { .5, 0, 0, 0, 0, .45, 0.05, .5, 2.25, .5, 2.25, -.5, 0.05, -.5, 0, -.45, 0, 0, -10000 };
125 double vehiclePoly_TransportFrontGlass[] = { 0.1, 0, 0.05, 0, 0.05, 0.45, 0.25, 0.4, 0.25, -.4, 0.05, -0.45, 0.05, 0, -10000 };
126 double vehiclePoly_TransportRightGlass[] = { 0.36, -.47, 0.10, -.48, 1.25, -.48, 1.25, -.4, 0.3, -.4, 0.10, -.48, -10000 };
127 double vehiclePoly_TransportLeftGlass[] = { 0.36, .47, 0.10, .48, 1.25, .48, 1.25, .4, 0.3, .4, 0.10, .48, -10000 };
129 double vehiclePoly_EVehicleBody[] = { .5, 0, 0, 0, 0, .3, 0.08, .44, 0.25, .5, 0.75, .5, .92, .44, 1, .3, 1, -.3, .92, -.44, .75, -.5, .25, -.5, 0.08, -.44, 0, -.3, 0, 0, -1000 };
130 double vehiclePoly_EVehicleFrontGlass[] = { .5, 0, 0.05, .05, 0.05, .25, 0.13, .39, 0.3, .45, 0.70, .45, .87, .39, .95, .25, .95, -.25, .87, -.39, .70, -.45, .3, -.45, 0.13, -.39, 0.05, -.25, 0.05, 0.05, -1000 };
132 double vehiclePoly_EVehicleBackGlass[] = { 0.65, 0, 0.9, 0, 0.9, 0.4, 0.57, 0.3, 0.57, -0.3, 0.9, -0.4, 0.9, 0, -10000 };
143 GUIGlObject& o, std::map<GUISUMOAbstractView*, int>& additionalVisualizations)
144 :
GUIGLObjectPopupMenu(app, parent, o), myVehiclesAdditionalVisualizations(additionalVisualizations) {
154 if (!static_cast<GUIVehicle*>(myObject)->hasActiveAddVisualisation(myParent,
VO_SHOW_ALL_ROUTES)) {
171 if (!static_cast<GUIVehicle*>(myObject)->hasActiveAddVisualisation(myParent,
VO_SHOW_ROUTE)) {
188 if (!static_cast<GUIVehicle*>(myObject)->hasActiveAddVisualisation(myParent,
VO_SHOW_BEST_LANES)) {
205 if (!static_cast<GUIVehicle*>(myObject)->hasActiveAddVisualisation(myParent,
VO_TRACKED)) {
206 myParent->startTrack(static_cast<GUIVehicle*>(myObject)->
getGlID());
216 myParent->stopTrack();
224 if (!static_cast<GUIVehicle*>(myObject)->hasActiveAddVisualisation(myParent,
VO_SHOW_LFLINKITEMS)) {
250 SUMOReal speedFactor,
int vehicleIndex) :
251 MSVehicle(pars, route, type, speedFactor, vehicleIndex),
263 while (i->first->removeAdditionalGLVisualisation(
this));
266 for (std::map<GUIOSGView*, osg::ShapeDrawable*>::iterator i = myGeom.begin(); i != myGeom.end(); ++i) {
267 i->first->remove(
this);
305 new FXMenuSeparator(ret);
307 if (trackedID < 0 || (
size_t)trackedID !=
getGlID()) {
314 new FXMenuSeparator(ret);
330 ret->
mkItem(
"left same route [#]",
false, (
unsigned int)
getParameter().repetitionNumber);
339 ret->
mkItem(
"waiting time [s]",
true,
341 ret->
mkItem(
"last lane change [s]",
true,
344 ret->
mkItem(
"position [m]",
true,
346 ret->
mkItem(
"speed [m/s]",
true,
348 ret->
mkItem(
"angle",
true,
351 ret->
mkItem(
"CO2 (HBEFA) [mg/s]",
true,
353 ret->
mkItem(
"CO (HBEFA) [mg/s]",
true,
355 ret->
mkItem(
"HC (HBEFA) [mg/s]",
true,
357 ret->
mkItem(
"NOx (HBEFA) [mg/s]",
true,
359 ret->
mkItem(
"PMx (HBEFA) [mg/s]",
true,
361 ret->
mkItem(
"fuel (HBEFA) [ml/s]",
true,
363 ret->
mkItem(
"noise (Harmonoise) [dB]",
true,
384 glBegin(GL_TRIANGLE_STRIP);
386 glVertex2d(-.5, .15);
404 glBegin(GL_TRIANGLES);
416 glTranslated(0, 0, offset * .1);
417 glPolygonOffset(0, offset * -1);
418 glBegin(GL_TRIANGLE_FAN);
420 while (poses[i] > -999) {
421 glVertex2d(poses[i], poses[i + 1]);
438 glRotated(90, 0, 0, 1);
439 glScaled(length, width, 1.);
447 drawPoly(vehiclePoly_PassengerCarBodyFront, 4.5);
449 drawPoly(vehiclePoly_PassengerFrontGlass, 4.5);
452 glTranslated(0, 0, .045);
454 glTranslated(0, 0, -.045);
456 glTranslated(0, 0, .04);
459 glTranslated(0, 0, -.04);
464 glTranslated(.5, 0, 0);
465 glScaled(.25 / (length), 1, 1.);
466 glTranslated(0, 0, .045);
469 glTranslated(0, 0, -.045);
470 glTranslated(0, 0, .04);
473 glTranslated(0, 0, -.04);
483 drawPoly(vehiclePoly_PassengerCarBodyFront, 4.5);
485 drawPoly(vehiclePoly_PassengerFrontGlass, 4.5);
488 drawPoly(vehiclePoly_PassengerVanBody, 4);
490 drawPoly(vehiclePoly_PassengerVanBodyFront, 4.5);
492 drawPoly(vehiclePoly_PassengerVanFrontGlass, 4.5);
493 drawPoly(vehiclePoly_PassengerVanRightGlass, 4.5);
494 drawPoly(vehiclePoly_PassengerVanLeftGlass, 4.5);
495 drawPoly(vehiclePoly_PassengerVanBackGlass, 4.5);
498 drawPoly(vehiclePoly_PassengerVanBody, 4);
500 drawPoly(vehiclePoly_PassengerVanBodyFront, 4.5);
502 drawPoly(vehiclePoly_PassengerVanFrontGlass, 4.5);
503 drawPoly(vehiclePoly_DeliveryMediumRightGlass, 4.5);
504 drawPoly(vehiclePoly_DeliveryMediumLeftGlass, 4.5);
509 glScaled(1. / (length), 1, 1.);
510 drawPoly(vehiclePoly_TransportBody, 4);
512 drawPoly(vehiclePoly_TransportFrontGlass, 4.5);
513 drawPoly(vehiclePoly_TransportRightGlass, 4.5);
514 drawPoly(vehiclePoly_TransportLeftGlass, 4.5);
521 glScaled(1. / (length), 1, 1.);
522 glTranslated(0, 0, .04);
523 glBegin(GL_TRIANGLE_FAN);
524 glVertex2d(ml / 2., 0);
527 glVertex2d(0 + .05, -.5);
528 glVertex2d(ml - .05, -.5);
529 glVertex2d(ml, -.45);
531 glVertex2d(ml - .05, .5);
532 glVertex2d(0 + .05, .5);
536 glTranslated(0, 0, -.04);
538 glTranslated(0, 0, .045);
541 glVertex2d(0 + .05, .48);
542 glVertex2d(0 + .05, -.48);
543 glVertex2d(0 + .15, -.48);
544 glVertex2d(0 + .15, .48);
546 glVertex2d(ml - .1, .45);
547 glVertex2d(ml - .1, -.45);
548 glVertex2d(ml - .05, -.45);
549 glVertex2d(ml - .05, .45);
551 glVertex2d(0 + .20, .49);
552 glVertex2d(0 + .20, .45);
553 glVertex2d(ml - .20, .45);
554 glVertex2d(ml - .20, .49);
556 glVertex2d(0 + .20, -.49);
557 glVertex2d(0 + .20, -.45);
558 glVertex2d(ml - .20, -.45);
559 glVertex2d(ml - .20, -.49);
562 glTranslated(0, 0, -.045);
585 drawPoly(vehiclePoly_EVehicleBody, 4);
587 drawPoly(vehiclePoly_EVehicleFrontGlass, 4.5);
588 glTranslated(0, 0, .048);
593 glVertex2d(.35, -.5);
596 glVertex2d(.3, -.05);
597 glVertex2d(.7, -.05);
603 glVertex2d(.65, -.5);
606 glTranslated(0, 0, -.048);
633 glTranslated(0, 0, 0.1);
635 glTranslated(.4, 0, 0);
637 glTranslated(.4, 0, 0);
644 drawPoly(vehiclePoly_PassengerCarBodyFront, 4.5);
646 drawPoly(vehiclePoly_PassengerFrontGlass, 4.5);
656 glBegin(GL_TRIANGLE_FAN);
657 glVertex2d(1 / 2., 0);
660 glVertex2d(0 + .05, -.05);
661 glVertex2d(1 - .05, -.05);
664 glVertex2d(1 - .05, .05);
665 glVertex2d(0 + .05, .05);
672 glBegin(GL_TRIANGLE_FAN);
673 glVertex2d(1 / 2., 0);
676 glVertex2d(0 + .05, -.2);
677 glVertex2d(1 - .05, -.2);
680 glVertex2d(1 - .05, .2);
681 glVertex2d(0 + .05, .2);
688 drawPoly(vehiclePoly_PassengerSedanRightGlass, 4.5);
689 drawPoly(vehiclePoly_PassengerSedanLeftGlass, 4.5);
690 drawPoly(vehiclePoly_PassengerSedanBackGlass, 4.5);
693 drawPoly(vehiclePoly_PassengerHatchbackRightGlass, 4.5);
694 drawPoly(vehiclePoly_PassengerHatchbackLeftGlass, 4.5);
695 drawPoly(vehiclePoly_PassengerHatchbackBackGlass, 4.5);
698 drawPoly(vehiclePoly_PassengerWagonRightGlass, 4.5);
699 drawPoly(vehiclePoly_PassengerWagonLeftGlass, 4.5);
700 drawPoly(vehiclePoly_PassengerWagonBackGlass, 4.5);
723 glTranslated(0, 0, .1);
726 glTranslated(0, 0, .1);
748 drawPoly(vehiclePoly_PassengerSedanRightGlass, 4.5);
749 drawPoly(vehiclePoly_PassengerSedanLeftGlass, 4.5);
750 drawPoly(vehiclePoly_PassengerSedanBackGlass, 4.5);
844 #define BLINKER_POS_FRONT .5
845 #define BLINKER_POS_BACK .5
849 glColor3d(1.f, .8f, 0);
885 glColor3f(1.f, .2f, 0);
910 glScaled(upscale, upscale, 1);
965 glColor3d(0., 1., 0.);
968 glVertex2d(0., minGap);
969 glVertex2d(-.5, minGap);
970 glVertex2d(.5, minGap);
975 glTranslated(0, 0, .1);
1047 size_t personIndex = 0;
1048 for (std::vector<MSPerson*>::const_iterator i = ps.begin(); i != ps.end(); ++i) {
1050 assert(person != 0);
1062 glTranslated(0, 0,
getType() - .1);
1072 for (
int i = noReroutePlus1 - 1; i >= 0; i--) {
1082 if ((*i).myLink == 0) {
1085 MSLink* link = (*i).myLink;
1089 if ((*i).mySetRequest) {
1090 glColor3d(0, .8, 0);
1092 glColor3d(.8, 0, 0);
1094 const SUMOTime leaveTime = (*i).myLink->getLeaveTime(
1111 glTranslated(pos.
x(), pos.
y(), -.1);
1115 glTranslated(-pos.
x(), -pos.
y(), .1);
1118 const std::vector<MSVehicle::LaneQ>&
1138 switch (activeScheme) {
1179 SUMOReal hue = 180. + atan2(center.
x() - p.
x(), center.
y() - p.
y()) * 180. /
PI;
1188 SUMOReal hue = 180. + atan2(center.
x() - p.
x(), center.
y() - p.
y()) * 180. /
PI;
1197 SUMOReal hue = 180. + atan2(pb.
x() - pe.
x(), pb.
y() - pe.
y()) * 180. /
PI;
1211 switch (activeScheme) {
1274 glGetDoublev(GL_CURRENT_COLOR, colors);
1275 colors[0] -= darken;
1276 if (colors[0] < 0) {
1279 colors[1] -= darken;
1280 if (colors[1] < 0) {
1283 colors[2] -= darken;
1284 if (colors[2] < 0) {
1287 colors[3] -= darken;
1288 if (colors[3] < 0) {
1304 std::vector<std::vector<MSVehicle::LaneQ> > bestLanes =
myBestLanes;
1307 for (std::vector<std::vector<MSVehicle::LaneQ> >::iterator j = bestLanes.begin(); j != bestLanes.end(); ++j) {
1308 std::vector<MSVehicle::LaneQ>& lanes = *j;
1311 for (std::vector<MSVehicle::LaneQ>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
1312 gmax =
MAX2((*i).length, gmax);
1313 rmax =
MAX2((*i).occupation, rmax);
1315 for (std::vector<MSVehicle::LaneQ>::const_iterator i = lanes.begin(); i != lanes.end(); ++i) {
1318 SUMOReal r = (*i).occupation / rmax;
1341 for (; i != r.
end(); ++i) {
1342 const GUILane* lane =
static_cast<GUILane*
>((*i)->getLanes()[0]);
1354 }
else if (routeIndex == 0) {
1361 #ifdef HAVE_INTERNAL_LANES
1362 const MSEdge* previousInternal = previous->getInternalFollowingEdge(¤t->
getEdge());
1364 const MSEdge* previousInternal = 0;
1366 if (previousInternal != 0) {
1367 return previousInternal->
getLanes()[0];
1391 const int numCarriages = floor(length / (defaultLength + carriageGap) + 0.5);
1392 assert(numCarriages > 0);
1393 const SUMOReal carriageLengthWithGap = length / numCarriages;
1394 const SUMOReal carriageLength = carriageLengthWithGap - carriageGap;
1400 int backRouteIndex = routeIndex;
1406 if (requiredSeats > 0) {
1410 for (
int i = 0; i < numCarriages; ++i) {
1411 while (carriageOffset < 0) {
1415 while (carriageBackOffset < 0) {
1417 carriageBackOffset += backLane->
getLength();
1422 if (i >= firstPassengerCarriage) {
1426 glTranslated(front.
x(), front.
y(),
getType());
1427 glRotated(angle, 0, 0, 1);
1429 glBegin(GL_TRIANGLE_FAN);
1430 glVertex2d(-halfWidth + xCornerCut, 0);
1431 glVertex2d(-halfWidth, yCornerCut);
1432 glVertex2d(-halfWidth, carriageLength - yCornerCut);
1433 glVertex2d(-halfWidth + xCornerCut, carriageLength);
1434 glVertex2d(halfWidth - xCornerCut, carriageLength);
1435 glVertex2d(halfWidth, carriageLength - yCornerCut);
1436 glVertex2d(halfWidth, yCornerCut);
1437 glVertex2d(halfWidth - xCornerCut, 0);
1441 carriageOffset -= carriageLengthWithGap;
1442 carriageBackOffset -= carriageLengthWithGap;
1466 if (requiredSeats <= 0) {
1469 const Line l(front, back);
1476 for (
SUMOReal p = 2; p <= length - 1; p += 1) {
1492 std::string result =
"";
1494 result +=
"parking";
1496 result +=
"stopped";
1500 if (
myStops.front().triggered) {
1501 result +=
", triggered";
1518 std::vector<const SUMOVehicle*> blockingFoes;
1521 for (std::vector<const SUMOVehicle*>::const_iterator it = blockingFoes.begin(); it != blockingFoes.end(); ++it) {
1524 #ifdef HAVE_INTERNAL_LANES
1526 for (MSLink::LinkLeaders::const_iterator it = linkLeaders.begin(); it != linkLeaders.end(); ++it) {
1529 if ((static_cast<const GUIVehicle*>(leader))->myLinkLeaders.count(
getID()) == 0) {
1540 GUIVehicle::updateColor(GUIOSGView* view) {
1543 myGeom[view]->setColor(osg::Vec4(col.
red() / 255., col.
green() / 255., col.
blue() / 255., col.
alpha() / 255.));
float vehicleExaggeration
The vehicle exaggeration (upscale)
SUMOReal length2D() const
bool signalSet(int which) const
Returns whether the given signal is on.
GUIParameterTableWindow * getParameterWindow(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own parameter window.
virtual void drawGLAdditional(GUISUMOAbstractView *const parent, const GUIVisualizationSettings &s) const
Draws additionally triggered visualisations.
virtual const std::vector< LaneQ > & getBestLanes(bool forceRebuild=false, MSLane *startLane=0) const
Returns the description of best lanes to use in order to continue the route.
void selectBlockingFoes() const
adds the blocking foes to the current selection
const MSVehicleType * myType
This Vehicle's type.
void setColor(const GUIVisualizationSettings &s) const
sets the color according to the currente settings
SUMOReal getColorValue(size_t activeScheme) const
gets the color value according to the current scheme index
const std::vector< SUMOReal > & getShapeRotations() const
MSEdge & getEdge() const
Returns the lane's edge.
Representation of a vehicle in the micro simulation.
unsigned int getNumberReroutes() const
Returns the number of new routes this vehicle got.
double vehiclePoly_TransportFrontGlass[]
GUIGLObjectPopupMenu * getPopUpMenu(GUIMainWindow &app, GUISUMOAbstractView &parent)
Returns an own popup-menu.
MoveReminderCont myMoveReminders
Current lane's move reminder.
const RGBColor getColor(const SUMOReal value) const
SUMOReal getHBEFA_HCEmissions() const
Returns HC emission of the current state.
int repetitionNumber
The number of times the vehicle shall be repeatedly inserted.
static RGBColor fromHSV(SUMOReal h, SUMOReal s, SUMOReal v)
Converts the given hsv-triplet to rgb.
bool showBlinker
Information whether vehicle blinkers shall be drawn.
SUMOReal getImpatience() const
Returns this vehicles impatience.
void buildNameCopyPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds entries which allow to copy the name / typed name into the clipboard.
std::vector< std::vector< LaneQ > > myBestLanes
Position getCenter() const
Returns the center of the boundary.
const MSCFModel & getCarFollowModel() const
Returns the vehicle's car following model definition.
State myState
This Vehicles driving state (pos and speed)
GUIVisualizationTextSettings personName
const Position geometryPositionAtOffset(SUMOReal offset) const
SUMOReal getMaxSpeed() const
Returns the maximum speed.
DriveItemVector myLFLinkLanes
Container for used Links/visited Lanes during lookForward.
SUMOReal pos() const
Position of this state.
render as a slow (passenger) train
const std::vector< MSLane * > & getLanes() const
Returns this edge's lanes.
MSLane * getPreviousLane(MSLane *current, int &routeIndex) const
void drawAction_drawVehicleBlinker(const GUIVehicle &veh)
SUMOReal getLengthWithGap() const
Get vehicle's length including the minimum gap [m].
SUMOReal getHBEFA_NOxEmissions() const
Returns NOx emission of the current state.
void drawBestLanes() const
Draws the vehicle's best lanes.
SUMOReal getLeaveSpeed() const
MSEdgeVector::const_iterator MSRouteIterator
std::vector< std::pair< MSVehicle *, SUMOReal > > LinkLeaders
SUMOTime getWaitingTime() const
Returns the SUMOTime waited (speed was lesser than 0.1m/s)
SUMOReal ymin() const
Returns minimum y-coordinate.
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.
Position getPositionAtDistance2D(SUMOReal offset) const
bool drawLaneChangePreference
Information whether the lane change preference shall be drawn.
double vehiclePoly_EVehicleBody[]
SUMOReal xmin() const
Returns minimum x-coordinate.
bool hasActiveAddVisualisation(GUISUMOAbstractView *const parent, int which) const
Returns whether the named feature is enabled in the given view.
std::string time2string(SUMOTime t)
GUIVisualizationTextSettings vehicleName
SUMOReal getLength() const
Get vehicle's length [m].
const MSEdgeVector & getEdges() const
SUMOReal getLastLaneChangeOffset() const
Returns the time since the last lane change in seconds.
void buildCenterPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to center to the object.
double vehiclePoly_TransportBody[]
render as a fast (passenger) train
bool addAdditionalGLVisualisation(GUIGlObject *const which)
Adds an object to call its additional visualisation method.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
show all vehicle's routes
Boundary getCenteringBoundary() const
Returns the boundary to which the view shall be centered in order to show the object.
const MSRoute & getRoute() const
Returns the current route.
render as a delivery vehicle
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.
void removeActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
render as a sedan passenger vehicle ("Stufenheck")
const std::vector< SUMOReal > & getShapeLengths() const
SUMOReal distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimension
Position getPosition(SUMOReal offset=0) const
Return current position (x/y, cartesian)
SUMOReal getPositionOnLane() const
Get the vehicle's position along the lane.
static void drawText(const std::string &text, const Position &pos, const SUMOReal layer, const SUMOReal size, const RGBColor &col=RGBColor::BLACK, const SUMOReal angle=0)
draw Text with given parameters
void buildShowParamsPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to open the parameter window.
Show vehicle's current route.
bool drawAction_drawVehicleAsImage(const GUIVisualizationSettings &s, SUMOReal length=-1) const
double vehiclePoly_PassengerWagonRightGlass[]
SUMOReal x() const
Returns the x-position.
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.
double vehiclePoly_PassengerVanRightGlass[]
SUMOReal xmax() const
Returns maximum x-coordinate.
A class that stores a 2D geometrical boundary.
double vehiclePoly_PassengerHatchbackRightGlass[]
bool setFunctionalColor(size_t activeScheme) const
sets the color according to the current scheme index and some vehicle function
FXDEFMAP(GUIDialog_AppSettings) GUIDialog_AppSettingsMap[]
The car-following model and parameter.
MSAbstractLaneChangeModel & getLaneChangeModel()
SUMOReal scale
information about a lane's width (temporary, used for a single view)
double vehiclePoly_PassengerCarBody[]
std::string getStopInfo() const
retrieve information about the current stop state
Right blinker lights are switched on.
render as a semi-trailer transport vehicle ("Sattelschlepper")
Representation of a lane in the micro simulation (gui-version)
double vehiclePoly_PassengerFrontGlass[]
unsigned char blue() const
Returns the blue-amount of the color.
GUIColorer vehicleColorer
The vehicle colorer.
virtual int getTrackedID() const
static void drawFilledCircle(SUMOReal width, int steps=8)
Draws a filled circle around (0,0)
A road/street connecting two junctions.
GUIGlObjectType getType() const
Returns the type of the object as coded in GUIGlObjectType.
double vehiclePoly_PassengerCarBodyFront[]
void drawAction_drawVehicleAsPoly(const GUIVisualizationSettings &s) const
bool removeAdditionalGLVisualisation(GUIGlObject *const which)
Removes an object from the list of objects that show additional things.
static const RGBColor GREEN
Left blinker lights are switched on.
SUMOReal getHBEFA_COEmissions() const
Returns CO emission of the current state.
void drawAction_drawVehicleAsTrianglePlus() const
float addExaggeration
The additional structures exaggeration (upscale)
static void drawTexturedBox(unsigned int which, SUMOReal size)
Draws a named texture as a box with the given size.
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
render as a hatchback passenger vehicle ("Fliessheck")
double vehiclePoly_EVehicleBackGlass[]
SUMOReal getMinGap() const
Get the free space in front of vehicles of this class.
A point in 2D or 3D with translation and scaling methods.
bool drawMinGap
Information whether the minimum gap shall be drawn.
static const RGBColor DEFAULT_COLOR
The default color (for vehicle types and vehicles)
unsigned char alpha() const
Returns the alpha-amount of the color.
double vehiclePoly_EVehicleFrontGlass[]
std::map< GUISUMOAbstractView *, int > myAdditionalVisualizations
Enabled visualisations, per view.
std::list< Stop > myStops
The vehicle's list of stops.
show vehicle's current route
bool isStopped() const
Returns whether the vehicle is at a stop.
double vehiclePoly_TransportLeftGlass[]
const std::vector< LaneQ > & getBestLanes() const
Returns the description of best lanes to use in order to continue the route.
MSLane * myLane
The lane the vehicle is on.
Blinker lights on both sides are switched on.
void setPositionInVehicle(const Position &pos)
double vehiclePoly_DeliveryMediumLeftGlass[]
double vehiclePoly_PassengerWagonBackGlass[]
SUMOReal getHBEFA_PMxEmissions() const
Returns PMx emission of the current state.
static void drawPoly(double *poses, SUMOReal offset)
MSDevice_Vehroutes * myRoutes
void drawAction_drawVehicleBrakeLight(const GUIVehicle &veh)
int getNumPassengers() const
return the number of passengers
Show all vehicle's routes.
const std::vector< MSPerson * > & getPersons() const
Returns the list of persons using this vehicle.
SUMOReal getMaxDecel() const
Get the vehicle type's maximum deceleration [m/s^2].
static void drawBoxLines(const PositionVector &geom, const std::vector< SUMOReal > &rots, const std::vector< SUMOReal > &lengths, SUMOReal width)
Draws thick lines.
render as a passenger vehicle
void drawName(const Position &pos, const SUMOReal scale, const GUIVisualizationTextSettings &settings, const SUMOReal angle=0) const
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
const int VEHPARS_COLOR_SET
bool isParking() const
Returns whether the vehicle is parking.
PositionVector mySeatPositions
positions of seats in the vehicle (updated at every drawing step)
SUMOReal getHarmonoise_NoiseEmissions() const
Returns noise emissions of the current state.
static void drawLinkItem(const Position &pos, SUMOTime arrivalTime, SUMOTime leaveTime, SUMOReal exagerate)
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
SUMOVehicleShape getGuiShape() const
Get this vehicle type's shape.
MFXMutex myLock
The mutex used to avoid concurrent updates of the vehicle buffer.
Show vehicle's best lanes.
SUMOReal getHBEFA_FuelConsumption() const
Returns fuel consumption of the current state.
static void removeObject(GUIGlObject &o)
Removes all instances that pass values from the object with the given id.
render as a flexible city bus
GUIVehicle(SUMOVehicleParameter *pars, const MSRoute *route, const MSVehicleType *type, SUMOReal speedFactor, int vehicleIndex)
Constructor.
void computeSeats(const Position &front, const Position &back, int &requiredSeats) const
add seats to mySeatPositions and update requiredSeats
void unlock()
release mutex lock
Hide all vehicle's routes.
Hide vehicle's best lanes.
SUMOReal getWidth() const
Get the width which vehicles of this class shall have when being drawn.
Hide vehicle's current route.
void push_back(const PositionVector &p)
Appends all positions from the given vector.
static void drawBoxLine(const Position &beg, SUMOReal rot, SUMOReal visLength, SUMOReal width)
Draws a thick line.
void add(SUMOReal x, SUMOReal y)
Makes the boundary include the given coordinate.
Boundary & grow(SUMOReal by)
extends the boundary by the given amount
EdgeBasicFunction getPurpose() const
Returns the edge type (EdgeBasicFunction)
const Position & getSeatPosition(size_t personIndex) const
returns the seat position for the person with the given index
void drawGL(const GUIVisualizationSettings &s) const
Draws the object.
Structure representing possible vehicle parameter.
double vehiclePoly_PassengerVanLeftGlass[]
void drawAction_drawVehicleAsBoxPlus() const
MSRouteIterator end() const
Returns the end of the list of edges to pass.
SUMOVehicleShape
Definition of vehicle classes to differ between different appearences.
A MSNet extended by some values for usage within the gui.
GUIColorScheme & getScheme()
void drawRoute(const GUIVisualizationSettings &s, int routeNo, SUMOReal darken) const
Chooses the route to draw and draws it, darkening it as given.
Position positionAtOffset2D(SUMOReal pos) const
Returns the position at the given length.
MSLane * getViaLaneOrLane() const
return the via lane if it exists and the lane otherwise
RGBColor changedBrightness(const char change)
Returns a new color with altered brightness.
double vehiclePoly_PassengerVanBodyFront[]
void drawAction_drawBlinker(const GUIVehicle &veh, double dir)
SUMOReal y() const
Returns the y-position.
const MSVehicleType & getVehicleType() const
Returns the vehicle's type definition.
static MSDevice_Vehroutes * buildVehicleDevices(SUMOVehicle &v, std::vector< MSDevice * > &into, unsigned int maxRoutes=INT_MAX)
Build devices for the given vehicle, if needed.
SUMOReal getChosenSpeedFactor() const
Returns the precomputed factor by which the driver wants to be faster than the speed limit...
void buildSelectionPopupEntry(GUIGLObjectPopupMenu *ret, bool addSeparator=true)
Builds an entry which allows to (de)select the object.
const std::string & getID() const
Returns the name of the vehicle type.
SUMOReal getSpeed() const
Returns the vehicle's current speed.
const SUMOVehicleParameter & getParameter() const
Returns the vehicle's parameter (including departure definition)
Base class for coloring. Allows changing the used colors and sets the used color in dependence to a v...
render as a transport vehicle with one trailer
SUMOReal getWaitingSeconds() const
Returns the number of seconds waited (speed was lesser than 0.1m/s)
double vehiclePoly_PassengerSedanBackGlass[]
double vehiclePoly_PassengerHatchbackBackGlass[]
const PositionVector & getShape() const
Returns this lane's shape.
render as a (futuristic) e-vehicle
static void drawLine(const Position &beg, SUMOReal rot, SUMOReal visLength)
Draws a thin line.
void move2side(SUMOReal amount)
#define BLINKER_POS_FRONT
unsigned char green() const
Returns the green-amount of the color.
std::string getImgFile() const
Get this vehicle type's raster model file name.
SUMOReal ymax() const
Returns maximum y-coordinate.
double vehiclePoly_PassengerVanFrontGlass[]
MSRouteIterator myCurrEdge
Iterator to current route-edge.
void drawAction_drawRailCarriages(const GUIVisualizationSettings &s, SUMOReal defaultLength, int firstPassengerCarriage=0, bool asImage=false) const
show vehicle's best lanes
void drawRouteHelper(const MSRoute &r, SUMOReal exaggeration) const
Draws the route.
int vehicleQuality
The quality of vehicle drawing.
double vehiclePoly_TransportRightGlass[]
double vehiclePoly_DeliveryMediumRightGlass[]
double vehiclePoly_PassengerVanBody[]
The edge is an internal edge.
render as a wagon passenger vehicle ("Combi")
double vehiclePoly_PassengerVanBackGlass[]
unsigned char red() const
Returns the red-amount of the color.
SUMOReal getHBEFA_CO2Emissions() const
Returns CO2 emission of the current state.
double vehiclePoly_PassengerWagonLeftGlass[]
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.
const int VTYPEPARS_COLOR_SET
bool opened(SUMOTime arrivalTime, SUMOReal arrivalSpeed, SUMOReal leaveSpeed, SUMOReal vehicleLength, SUMOReal impatience, SUMOReal decel, SUMOTime waitingTime, std::vector< const SUMOVehicle * > *collectFoes=0) const
Returns the information whether the link may be passed.
double vehiclePoly_PassengerHatchbackLeftGlass[]
double vehiclePoly_PassengerSedanRightGlass[]
MSDevice_Person * myPersonDevice
The passengers this vehicle may have.
double vehiclePoly_PassengerSedanLeftGlass[]
Start to track a vehicle.
MSRouteIterator begin() const
Returns the begin of the list of edges to pass.
void addActiveAddVisualisation(GUISUMOAbstractView *const parent, int which)
Adds the named visualisation feature to the given view.
void buildPopupHeader(GUIGLObjectPopupMenu *ret, GUIMainWindow &app, bool addSeparator=true)
Builds the header.
SUMOReal getAngle() const
Returns the vehicle's direction in degrees.
render as a transport vehicle
const std::string & getID() const
Returns the name of the vehicle.
const PositionVector & getShape() const
const MSRoute * getRoute(int index) const
Called on route retrieval.
static RGBColor getColor()
gets the gl-color
static int getTextureID(const std::string &filename)
return texture id for the given filename (initialize on first use)
A MSVehicle extended by some values for usage within the gui.