39static const 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 };
40static const 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 };
41static const 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 };
42static const double vehiclePoly_PassengerSedanRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.77, -.47, 0.67, -.37, 0.45, -.37, 0.34, -.47, -10000 };
43static const double vehiclePoly_PassengerSedanLeftGlass[] = { 0.36, .43, 0.34, .47, 0.77, .47, 0.67, .37, 0.45, .37, 0.34, .47, -10000 };
44static const 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 };
45static const double vehiclePoly_PassengerHatchbackRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.94, -.47, 0.80, -.37, 0.45, -.37, 0.34, -.47, -10000 };
46static const double vehiclePoly_PassengerHatchbackLeftGlass[] = { 0.36, .43, 0.34, .47, 0.94, .47, 0.80, .37, 0.45, .37, 0.34, .47, -10000 };
47static const 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 };
48static const double vehiclePoly_PassengerWagonRightGlass[] = { 0.36, -.43, 0.34, -.47, 0.94, -.47, 0.87, -.37, 0.45, -.37, 0.34, -.47, -10000 };
49static const double vehiclePoly_PassengerWagonLeftGlass[] = { 0.36, .43, 0.34, .47, 0.94, .47, 0.87, .37, 0.45, .37, 0.34, .47, -10000 };
50static const 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 };
52static const 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 };
53static const 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 };
54static const 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 };
55static const double vehiclePoly_PassengerVanRightGlass[] = { 0.36, -.43, 0.20, -.47, 0.98, -.47, 0.91, -.37, 0.31, -.37, 0.20, -.47, -10000 };
56static const double vehiclePoly_PassengerVanLeftGlass[] = { 0.36, .43, 0.20, .47, 0.98, .47, 0.91, .37, 0.31, .37, 0.20, .47, -10000 };
57static const 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 };
61static const double vehiclePoly_DeliveryMediumRightGlass[] = { 0.21, -.43, 0.20, -.47, 0.38, -.47, 0.38, -.37, 0.31, -.37, 0.20, -.47, -10000 };
62static const double vehiclePoly_DeliveryMediumLeftGlass[] = { 0.21, .43, 0.20, .47, 0.38, .47, 0.38, .37, 0.31, .37, 0.20, .47, -10000 };
64static const 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 };
65static const 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 };
66static const double vehiclePoly_TransportRightGlass[] = { 0.36, -.47, 0.10, -.48, 1.25, -.48, 1.25, -.4, 0.3, -.4, 0.10, -.48, -10000 };
67static const double vehiclePoly_TransportLeftGlass[] = { 0.36, .47, 0.10, .48, 1.25, .48, 1.25, .4, 0.3, .4, 0.10, .48, -10000 };
69static const 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 };
70static const 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 };
74static const double vehiclePoly_Ship[] = { 0.25, 0, 0, 0, 0.1, 0.25, 0.2, 0.45, 0.25, 0.5, 0.95, 0.5, 1.0, 0.45, 1.0, -0.45, 0.95, -0.5, 0.25, -0.5, 0.2, -0.45, 0.1, -0.25, 0, 0, -10000 };
75static const double vehiclePoly_ShipDeck[] = { 0.5, 0, 0.25, 0.4, 0.95, 0.4, 0.95, -0.4, 0.25, -0.4, 0.25, 0.4, -10000 };
76static const double vehiclePoly_ShipSuperStructure[] = { 0.8, 0, 0.5, 0.3, 0.85, 0.3, 0.85, -0.3, 0.5, -0.3, 0.5, 0.3, -10000 };
78static const double vehiclePoly_Cyclist[] = { 0.5, 0, 0.25, 0.45, 0.25, 0.5, 0.8, 0.15, 0.8, -0.15, 0.25, -0.5, 0.25, -0.45, -10000 };
79static const double vehiclePoly_BicycleSeat[] = { 0.565, 0, 0.570, 0.03, 0.575, 0.05, 0.585, 0.06, 0.645, 0.06, 0.665, 0.07, 0.685, 0.10, 0.695, 0.13, 0.715, 0.16, 0.735, 0.18, 0.742, 0.17, 0.745, 0.16, 0.755, 0.13, 0.76, 0.11, 0.765, 0, 0.76, -0.11, 0.755, -0.13, 0.745, -0.16, 0.742, -0.17, 0.735, -0.18, 0.715, -0.16, 0.695, -0.13, 0.685, -0.10, 0.665, -0.07, 0.645, -0.06, 0.585, -0.06, 0.575, -0.05, 0.57, -0.03, -10000 };
80static const double vehiclePoly_MotorcycleSeat[] = { 0.5, 0, 0.503, 0.072, 0.506, 0.097, 0.518, 0.135, 0.539, 0.162, 0.567, 0.183, 0.641, 0.194, 0.698, 0.202, 0.706, 0.194, 0.713, 0.189, 0.721, 0.162, 0.729, 0.132, 0.732, 0.097, 0.734, 0.051, 0.735, 0, 0.734, -0.051, 0.732, -0.097, 0.729, -0.132, 0.721, -0.162, 0.713, -0.189, 0.706, -0.194, 0.698, -0.202, 0.641, -0.194, 0.567, -0.183, 0.539, -0.162, 0.518, -0.135, 0.506, -0.097, 0.503, -0.072, -10000 };
98static const double vehiclePoly_aircraft[] = {0.633, -0.500, 0.609, -0.465, 0.563, -0.460, 0.517, -0.168, 0.413, -0.156, 0.509, -0.053, 0.509, 0.053, 0.413, -0.156, 0.413, 0.156, 0.385, -0.101, 0.385, 0.101, 0.354, -0.058, 0.354, 0.058, 0.109, -0.050, 0.109, 0.050, 0, -0.003, 0, 0.003, 0, 0.003, 0.633, 0.500, 0.633, 0.500, 0.609, 0.465, 0.563, 0.460, 0.517, 0.168, 0.413, 0.156, 0.509, 0.053, 0.385, 0.101, 0.326, 0.158, 0.326, 0.108, 0.413, 0.156, 0.385, 0.101, 0.509, 0.053, 0.509, -0.053, 0.761, 0.043, 0.761, -0.043, 0.830, 0.030, 0.830, -0.030, 0.952, -0.196, 0.933, -0.196, 0.907, -0.008, 0.830, 0.030, 0.933, 0.196, 0.952, 0.196, 0.907, 0.008, 0.830, 0.030, 0.907, -0.008, 1.000, 0.003, 0.907, 0.008, 0.354, -0.058, 0.509, -0.053, 0.413, -0.156, 0.385, -0.101, 0.326, -0.158, 0.326, -0.108, 0.385, -0.101, -10000};
99static const double vehiclePoly_aircraftEngines[] = {0.326, -0.158, 0.413, -0.156, 0.326, -0.108, 0.385, -0.101, 0.385, -0.101, 0.385, 0.101, 0.385, 0.101, 0.326, 0.108, 0.413, 0.156, 0.326, 0.158, -10000};
109 glTranslated(0, 0, offset * .1);
110 glPolygonOffset(0, (GLfloat) - offset);
111 glBegin(GL_TRIANGLE_FAN);
113 while (poses[i] > -999) {
114 glVertex2d(poses[i], poses[i + 1]);
124 glScaled(width, length, 1.);
125 glBegin(GL_TRIANGLE_STRIP);
129 glVertex2d(-.5, .85);
134 glVertex2d(-.5, .15);
151 glScaled(width, length, 1.);
152 glBegin(GL_TRIANGLES);
169 const int steps =
MIN2(
MAX2(16,
int(detail / 5)), 64);
175 int carriageIndex,
bool isStopped,
bool amReversed) {
181 glRotated(90, 0, 0, 1);
183 glScaled(length, width, 1.);
188 glRotatef(180, 0, 0, 1);
189 glTranslated(-1, 0, 0);
202 glTranslated(0, 0, .045);
204 glTranslated(0, 0, -.045);
206 glTranslated(0, 0, .04);
209 glTranslated(0, 0, -.04);
220 glTranslated(0.4, 0, .5);
221 glScaled(0.1, 0.2, 1);
237 glTranslated(0.5, 0, .3);
238 glScaled(0.5, 0.05, 1);
243 glTranslated(0.25, 0, .3);
244 glScaled(0.02, 0.5, 1);
282 if (carriageIndex < 1) {
283 glScaled(1. / (length), 1, 1.);
295 glScaled(1. / (length), 1, 1.);
296 glTranslated(0, 0, .04);
297 glBegin(GL_TRIANGLE_FAN);
298 glVertex2d(ml / 2., 0);
301 glVertex2d(0 + .05, -.5);
302 glVertex2d(ml - .05, -.5);
303 glVertex2d(ml, -.45);
305 glVertex2d(ml - .05, .5);
306 glVertex2d(0 + .05, .5);
310 glTranslated(0, 0, -.04);
312 glTranslated(0, 0, .045);
315 glVertex2d(0 + .05, .48);
316 glVertex2d(0 + .05, -.48);
317 glVertex2d(0 + .15, -.48);
318 glVertex2d(0 + .15, .48);
320 glVertex2d(ml - .1, .45);
321 glVertex2d(ml - .1, -.45);
322 glVertex2d(ml - .05, -.45);
323 glVertex2d(ml - .05, .45);
325 glVertex2d(0 + .20, .49);
326 glVertex2d(0 + .20, .45);
327 glVertex2d(ml - .20, .45);
328 glVertex2d(ml - .20, .49);
330 glVertex2d(0 + .20, -.49);
331 glVertex2d(0 + .20, -.45);
332 glVertex2d(ml - .20, -.45);
333 glVertex2d(ml - .20, -.49);
336 glTranslated(0, 0, -.045);
344 glRotated(-90, 0, 0, 1);
345 const double xCornerCut = 0.3 / width;
346 const double yCornerCut = 0.4 / length;
347 const double drawnCarriageLength = 1;
348 const double halfWidth = 0.5;
349 glBegin(GL_TRIANGLE_FAN);
350 glVertex2d(-halfWidth + xCornerCut, 0);
351 glVertex2d(-halfWidth, yCornerCut);
352 glVertex2d(-halfWidth, drawnCarriageLength - yCornerCut);
353 glVertex2d(-halfWidth + xCornerCut, drawnCarriageLength);
354 glVertex2d(halfWidth - xCornerCut, drawnCarriageLength);
355 glVertex2d(halfWidth, drawnCarriageLength - yCornerCut);
356 glVertex2d(halfWidth, yCornerCut);
357 glVertex2d(halfWidth - xCornerCut, 0);
360 glTranslated(0, 0, 0.1);
362 glBegin(GL_TRIANGLE_FAN);
363 glVertex2d(-halfWidth + 2 * xCornerCut, yCornerCut);
364 glVertex2d(-halfWidth + xCornerCut, 3 * yCornerCut);
365 glVertex2d(halfWidth - xCornerCut, 3 * yCornerCut);
366 glVertex2d(halfWidth - 2 * xCornerCut, yCornerCut);
375 glTranslated(0, 0, .048);
380 glVertex2d(.35, -.5);
383 glVertex2d(.3, -.05);
384 glVertex2d(.7, -.05);
390 glVertex2d(.65, -.5);
393 glTranslated(0, 0, -.048);
420 glTranslated(0, 0, 0.1);
422 glTranslated(.4, 0, 0);
424 glTranslated(.4, 0, 0);
445 glTranslated(0.7, 0, 0);
446 glColor3d(.18, .55, .34);
461 glTranslated(0.7, 0, 0);
464 glColor3d(.5, .5, .5);
480 glTranslated(0.7, 0, 0);
481 glColor3d(.5, .5, .5);
492 glTranslated(.5, .5, -0.1);
497 glTranslated(.5, -.5, -0.1);
504 glBegin(GL_TRIANGLE_STRIP);
514 glTranslated(0, 0, 0.1);
515 glBegin(GL_TRIANGLE_STRIP);
526 glColor3d(1.f, 0, 0);
528 glTranslated(0.62, -0.49, 0.1);
531 glColor3d(0, 1.f, 0);
533 glTranslated(0.62, 0.49, 0.1);
543 glTranslated(0.2, 0, 0.15);
544 glScaled(0.09, 0.13, 0.7);
549 glTranslated(0.42, 0, 0.1);
550 glColor3d(0.3, 0.3, 0.3);
556 glTranslated(0.17, 0, 0.1);
557 glScaled(0.17, 0.19, 0.9);
562 glColor3d(0.3, 0.3, 0.3);
566 glTranslated(0.83, 0, 0.1);
567 glScaled(0.17, 0.17, 0.9);
573 glTranslated(0.5, 0, 0.1);
574 glScaled(0.5, 0.28, 0.9);
597 glBegin(GL_TRIANGLE_FAN);
598 glVertex2d(1 / 2., 0);
601 glVertex2d(0 + .05, -.05);
602 glVertex2d(1 - .05, -.05);
605 glVertex2d(1 - .05, .05);
606 glVertex2d(0 + .05, .05);
614 glBegin(GL_TRIANGLE_FAN);
615 glVertex2d(1 / 2., 0);
618 glVertex2d(0 + .05, -.2);
619 glVertex2d(1 - .05, -.2);
622 glVertex2d(1 - .05, .2);
623 glVertex2d(0 + .05, .2);
652 glTranslated(0, 0, 6);
655 glRectd(0.146, 0.24675, 0.171, 0.176);
656 glRectd(0.121, 0.176, 0.146, 0.1055);
657 glRectd(0.146, 0.1055, 0.171, 0.035);
658 glRectd(0.121, 0.035, 0.146, -0.035);
659 glRectd(0.146, -0.1055, 0.171, -0.035);
660 glRectd(0.121, -0.176, 0.146, -0.1055);
661 glRectd(0.146, -0.24675, 0.171, -0.176);
663 glRectd(0.913, 0.24675, 0.938, 0.176);
664 glRectd(0.888, 0.176, 0.913, 0.1055);
665 glRectd(0.888, 0.176, 0.913, 0.1055);
666 glRectd(0.913, 0.1055, 0.938, 0.035);
667 glRectd(0.888, 0.035, 0.913, -0.035);
668 glRectd(0.913, -0.1055, 0.938, -0.035);
669 glRectd(0.888, -0.176, 0.913, -0.1055);
670 glRectd(0.888, -0.176, 0.913, -0.1055);
671 glRectd(0.913, -0.24675, 0.938, -0.176);
675 glScaled(0.2, 0.5, 1);
683 if (carriageIndex < 0) {
690 double l = length - 2.3;
691 if (carriageIndex != 0) {
702 glTranslated(0, 0, .1);
705 glTranslated(0, 0, .1);
static const double vehiclePoly_PassengerVanRightGlass[]
static const double vehiclePoly_EmergencyLadder3[]
static const double vehiclePoly_PassengerVanBodyFront[]
static const double vehiclePoly_EVehicleFrontGlass[]
static const double vehiclePoly_ShipSuperStructure[]
static const double vehiclePoly_scooterBase[]
static const double vehiclePoly_MotorcycleSeat[]
static const double vehiclePoly_PassengerVanBody[]
static const double vehiclePoly_PassengerWagonLeftGlass[]
static const double vehiclePoly_TransportFrontGlass[]
static const double vehiclePoly_PassengerHatchbackRightGlass[]
static const double vehiclePoly_DeliveryMediumRightGlass[]
static const double vehiclePoly_PassengerHatchbackLeftGlass[]
static const double vehiclePoly_Ship[]
static const double vehiclePoly_EmergencyLadder6[]
static const double vehiclePoly_PassengerSedanLeftGlass[]
static const double vehiclePoly_Emergency2[]
static const double vehiclePoly_PassengerVanBackGlass[]
static const double vehiclePoly_EmergencyLadder7[]
static const double vehiclePoly_PassengerHatchbackBackGlass[]
static const double vehiclePoly_aircraftEngines[]
static const double vehiclePoly_EmergencyLadder4[]
static const double vehiclePoly_PassengerFrontGlass[]
static const double vehiclePoly_EmergencyLadder2[]
static const double vehiclePoly_TransportLeftGlass[]
static const double vehiclePoly_PassengerVanLeftGlass[]
static const double vehiclePoly_Cyclist[]
static const double vehiclePoly_PassengerWagonBackGlass[]
static const double vehiclePoly_PassengerSedanRightGlass[]
static const double vehiclePoly_PassengerCarBodyFront[]
static const double vehiclePoly_scooterBase2[]
static const double vehiclePoly_scooterBase3[]
static const double vehiclePoly_TaxiSign[]
static const double vehiclePoly_aircraft[]
static const double vehiclePoly_EmergencySign[]
static const double vehiclePoly_TransportBody[]
static const double vehiclePoly_EmergencyLadder[]
static const double vehiclePoly_PassengerWagonRightGlass[]
static const double vehiclePoly_DeliveryMediumLeftGlass[]
static const double vehiclePoly_TransportRightGlass[]
static const double vehiclePoly_PassengerSedanBackGlass[]
static const double vehiclePoly_Emergency[]
static const double vehiclePoly_PassengerVanFrontGlass[]
static const double vehiclePoly_ShipDeck[]
static const double vehiclePoly_PassengerCarBody[]
static const double vehiclePoly_EVehicleBody[]
static const double vehiclePoly_BicycleSeat[]
static const double vehiclePoly_EmergencyLadder5[]
SUMOVehicleShape
Definition of vehicle classes to differ between different appearances.
@ RICKSHAW
render as a rickshaw
@ RAIL_CARGO
render as a cargo train
@ EMERGENCY
render as an emergency vehicle
@ PASSENGER_VAN
render as a van
@ PASSENGER
render as a passenger vehicle
@ SCOOTER
render as a scooter
@ RAIL_CAR
render as a (city) rail without locomotive
@ SHIP
render as a arbitrary ship
@ DELIVERY
render as a delivery vehicle
@ BICYCLE
render as a bicycle
@ MOTORCYCLE
render as a motorcycle
@ BUS_TROLLEY
render as a trolley bus
@ TAXI
automated car (with cruise controllers)
@ E_VEHICLE
render as a (futuristic) e-vehicle
@ ANT
render as a giant ant
@ TRUCK
render as a transport vehicle
@ AIRCRAFT
render as aircraft
@ FIREBRIGADE
render as a fire brigade
@ PASSENGER_HATCHBACK
render as a hatchback passenger vehicle ("Fliessheck")
@ BUS_FLEXIBLE
render as a flexible city bus
@ TRUCK_1TRAILER
render as a transport vehicle with one trailer
@ PASSENGER_SEDAN
render as a sedan passenger vehicle ("Stufenheck")
@ BUS_COACH
render as a coach
@ POLICE
render as a police car
@ PASSENGER_WAGON
render as a wagon passenger vehicle ("Combi")
@ TRUCK_SEMITRAILER
render as a semi-trailer transport vehicle ("Sattelschlepper")
@ PEDESTRIAN
render as a pedestrian
#define UNUSED_PARAMETER(x)
static void setColor(const RGBColor &c)
Sets the gl-color to this value.
static void drawFilledCircle(const double widradiusth, const int steps=8)
Draws a filled circle around (0,0)
static void popMatrix()
pop matrix
static RGBColor getColor()
gets the gl-color
static void drawBoxLine(const Position &beg, double rot, double visLength, double width, double offset=0)
Draws a thick line.
static void pushMatrix()
push matrix
static void drawText(const std::string &text, const Position &pos, const double layer, const double size, const RGBColor &col=RGBColor::BLACK, const double angle=0, const int align=0, double width=-1)
static bool drawAction_drawVehicleAsImage(const GUIVisualizationSettings &s, const std::string &file, const GUIGlObject *o, const double width, double length)
try to draw vehicle as raster image and return true if successful
static void drawAction_drawVehicleAsCircle(const double width, double detail)
draw vehicle as a circle
static void drawPoly(const double *poses, const double offset)
draw poly
static void drawAction_drawVehicleAsTrianglePlus(const double width, const double length, bool amReversed=false)
draw vehicle as a triangle
static void drawAction_drawVehicleAsPoly(const GUIVisualizationSettings &s, const SUMOVehicleShape shape, const double width, const double length, int carriageIndex=-1, bool isStopped=false, bool amReversed=false)
draw vehicle as a polygon
static void drawAction_drawVehicleAsBoxPlus(const double width, const double length, bool amReversed=false)
draw vehicle as a Box
static void drawTexturedBox(int which, double size)
Draws a named texture as a box with the given size.
static int getTextureID(const std::string &filename, const bool mirrorX=false)
return texture id for the given filename (initialize on first use)
Stores the information about how to visualize structures.
A point in 2D or 3D with translation and scaling methods.
static const RGBColor GREY
static const RGBColor BLACK
RGBColor changedBrightness(int change, int toChange=3) const
Returns a new color with altered brightness.