GUIVehicle.cpp File Reference


Detailed Description

Author:
Daniel Krajzewicz
Date:
Sept 2002
Version:
Id
GUIVehicle.cpp 8725 2010-05-04 20:27:48Z behrisch

Definition in file GUIVehicle.cpp.

#include <config.h>
#include <cmath>
#include <vector>
#include <string>
#include <utils/common/StringUtils.h>
#include <utils/common/SUMOVehicleParameter.h>
#include <microsim/MSVehicle.h>
#include "GUINet.h"
#include "GUIVehicle.h"
#include <gui/GUIApplicationWindow.h>
#include <utils/gui/windows/GUISUMOAbstractView.h>
#include <gui/GUIGlobals.h>
#include <utils/gui/div/GUIParameterTableWindow.h>
#include <utils/gui/windows/GUIAppEnum.h>
#include <microsim/logging/CastingFunctionBinding.h>
#include <microsim/logging/FunctionBinding.h>
#include <microsim/MSVehicleControl.h>
#include <utils/gui/div/GUIGlobalSelection.h>
#include <utils/common/RandHelper.h>
#include <microsim/MSAbstractLaneChangeModel.h>
#include <utils/gui/div/GLHelper.h>
#include <foreign/polyfonts/polyfonts.h>

Go to the source code of this file.

Defines

#define BLINKER_POS_BACK   .5
#define BLINKER_POS_FRONT   .5

Functions

void drawAction_drawVehicleAsBoxPlus (const GUIVehicle &veh, SUMOReal upscale)
void drawAction_drawVehicleAsPoly (const GUIVehicle &veh, SUMOReal upscale)
void drawAction_drawVehicleAsTrianglePlus (const GUIVehicle &veh, SUMOReal upscale)
void drawAction_drawVehicleBlinker (const GUIVehicle &veh)
void drawAction_drawVehicleName (const GUIVehicle &veh, SUMOReal size)
void drawPoly (double *poses, SUMOReal offset)
 FXDEFMAP (GUIVehicle::GUIVehiclePopupMenu) GUIVehiclePopupMenuMap[]
 FXIMPLEMENT (GUIVehicle::GUIVehiclePopupMenu, GUIGLObjectPopupMenu, GUIVehiclePopupMenuMap, ARRAYNUMBER(GUIVehiclePopupMenuMap)) double vehiclePoly_PassengerCarBody[]

Variables

double vehiclePoly_DeliveryMediumLeftGlass [] = { 0.21,.43, 0.20,.47, 0.38,.47, 0.38,.37, 0.31,.37, 0.20,.47, -10000 }
double vehiclePoly_DeliveryMediumRightGlass [] = { 0.21,-.43, 0.20,-.47, 0.38,-.47, 0.38,-.37, 0.31,-.37, 0.20,-.47, -10000 }
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 }
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 }
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 }
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 }
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 }
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 }
double vehiclePoly_PassengerHatchbackLeftGlass [] = { 0.36,.43, 0.34,.47, 0.94,.47, 0.80,.37, 0.45,.37, 0.34,.47, -10000 }
double vehiclePoly_PassengerHatchbackRightGlass [] = { 0.36,-.43, 0.34,-.47, 0.94,-.47, 0.80,-.37, 0.45,-.37, 0.34,-.47, -10000 }
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 }
double vehiclePoly_PassengerSedanLeftGlass [] = { 0.36,.43, 0.34,.47, 0.77,.47, 0.67,.37, 0.45,.37, 0.34,.47, -10000 }
double vehiclePoly_PassengerSedanRightGlass [] = { 0.36,-.43, 0.34,-.47, 0.77,-.47, 0.67,-.37, 0.45,-.37, 0.34,-.47, -10000 }
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 }
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 }
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 }
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 }
double vehiclePoly_PassengerVanLeftGlass [] = { 0.36,.43, 0.20,.47, 0.98,.47, 0.91,.37, 0.31,.37, 0.20,.47, -10000 }
double vehiclePoly_PassengerVanRightGlass [] = { 0.36,-.43, 0.20,-.47, 0.98,-.47, 0.91,-.37, 0.31,-.37, 0.20,-.47, -10000 }
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 }
double vehiclePoly_PassengerWagonLeftGlass [] = { 0.36,.43, 0.34,.47, 0.94,.47, 0.87,.37, 0.45,.37, 0.34,.47, -10000 }
double vehiclePoly_PassengerWagonRightGlass [] = { 0.36,-.43, 0.34,-.47, 0.94,-.47, 0.87,-.37, 0.45,-.37, 0.34,-.47, -10000 }
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 }
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 }
double vehiclePoly_TransportLeftGlass [] = { 0.36,.47, 0.10,.48, 1.25,.48, 1.25,.4, 0.3,.4, 0.10,.48, -10000 }
double vehiclePoly_TransportRightGlass [] = { 0.36,-.47, 0.10,-.48, 1.25,-.48, 1.25,-.4, 0.3,-.4, 0.10,-.48, -10000 }


Define Documentation

#define BLINKER_POS_BACK   .5

Definition at line 768 of file GUIVehicle.cpp.

Referenced by drawAction_drawVehicleBlinker().

#define BLINKER_POS_FRONT   .5

Definition at line 767 of file GUIVehicle.cpp.

Referenced by drawAction_drawVehicleBlinker().


Function Documentation

void drawAction_drawVehicleAsBoxPlus ( const GUIVehicle veh,
SUMOReal  upscale 
) [inline]

Definition at line 360 of file GUIVehicle.cpp.

References MSVehicleType::getGuiOffset(), MSVehicleType::getGuiWidth(), MSVehicleType::getLength(), MSVehicle::getVehicleType(), and SUMOReal.

Referenced by GUIVehicle::drawGL().

00360                                                                          {
00361     SUMOReal length = veh.getVehicleType().getLength();
00362     SUMOReal offset = veh.getVehicleType().getGuiOffset();
00363     glPushMatrix();
00364     glRotated(90, 0, 0, 1);
00365     //glTranslated(veh.getVehicleType().getGuiOffset(), 0, 0);
00366     glScaled(1, veh.getVehicleType().getGuiWidth(), 1.);
00367     glScaled(upscale, upscale, 1);
00368     glBegin(GL_TRIANGLE_FAN);
00369     glVertex2d((length-offset)/2., 0);
00370     glVertex2d(offset, 0);
00371     glVertex2d(offset, -.4);
00372     glVertex2d(offset+.1, -.5);
00373     glVertex2d(length, -.5);
00374     glVertex2d(length, .5);
00375     glVertex2d(offset+.1, .5);
00376     glVertex2d(offset, .4);
00377     glVertex2d(offset, 0);
00378     glEnd();
00379     glPopMatrix();
00380 }

void drawAction_drawVehicleAsPoly ( const GUIVehicle veh,
SUMOReal  upscale 
) [inline]

Definition at line 400 of file GUIVehicle.cpp.

References GLHelper::drawBoxLine(), GLHelper::drawFilledCircle(), drawPoly(), MSVehicleType::getGuiOffset(), MSVehicleType::getGuiShape(), MSVehicleType::getGuiWidth(), MSVehicleType::getLength(), MSVehicle::getVehicleType(), SUMOReal, SVS_BICYCLE, SVS_BUS, SVS_BUS_CITY, SVS_BUS_CITY_FLEXIBLE, SVS_BUS_OVERLAND, SVS_DELIVERY, SVS_E_VEHICLE, SVS_MOTORCYCLE, SVS_PASSENGER, SVS_PASSENGER_HATCHBACK, SVS_PASSENGER_SEDAN, SVS_PASSENGER_VAN, SVS_PASSENGER_WAGON, SVS_PEDESTRIAN, SVS_RAIL, SVS_RAIL_CARGO, SVS_RAIL_CITY, SVS_RAIL_FAST, SVS_RAIL_LIGHT, SVS_RAIL_SLOW, SVS_TRANSPORT, SVS_TRANSPORT_1TRAILER, SVS_TRANSPORT_SEMITRAILER, and SVS_UNKNOWN.

Referenced by GUIVehicle::drawGL().

00400                                                                       {
00401     GLdouble current[4], lighter[4];
00402     glGetDoublev(GL_CURRENT_COLOR, current);
00403     lighter[0] = current[0]+.2;
00404     if (lighter[0]>1) lighter[0] = 1;
00405     lighter[1] = current[1]+.2;
00406     if (lighter[1]>1) lighter[1] = 1;
00407     lighter[2] = current[2]+.2;
00408     if (lighter[2]>1) lighter[2] = 1;
00409     lighter[3] = current[3]+.2;
00410     if (lighter[3]>1) lighter[3] = 1;
00411 
00412 
00413     SUMOReal length = veh.getVehicleType().getLength();
00414     glPushMatrix();
00415     glRotated(90, 0, 0, 1);
00416     glTranslated(veh.getVehicleType().getGuiOffset(), 0, 0);
00417     glScaled(length-veh.getVehicleType().getGuiOffset(), veh.getVehicleType().getGuiWidth(), 1.);
00418     glScaled(upscale, upscale, 1);
00419     SUMOVehicleShape shape = veh.getVehicleType().getGuiShape();
00420     switch (shape) {
00421     case SVS_UNKNOWN:
00422         drawPoly(vehiclePoly_PassengerCarBody, -4);
00423         glColor3dv(lighter);
00424         drawPoly(vehiclePoly_PassengerCarBodyFront, -4.5);
00425         glColor3d(0, 0, 0);
00426         drawPoly(vehiclePoly_PassengerFrontGlass, -4.5);
00427         break;
00428     case SVS_PEDESTRIAN:
00429         //glScaled(1./(length-veh.getVehicleType().getGuiOffset()), 1, 1.);
00430         glTranslated(0, 0, -.045);
00431         GLHelper::drawFilledCircle(1);
00432         glTranslated(0, 0, .045);
00433         glScaled(.7, 2, 1);
00434         glTranslated(0, 0, -.04);
00435         glColor3dv(lighter);
00436         GLHelper::drawFilledCircle(1);
00437         glTranslated(0, 0, .04);
00438         break;
00439     case SVS_BICYCLE:
00440     case SVS_MOTORCYCLE: {
00441         SUMOReal offset = 0;
00442         glPushMatrix();
00443         glTranslated(.5, 0, 0);
00444         glScaled(.25/(length-veh.getVehicleType().getGuiOffset()), 1, 1.);
00445         glTranslated(0, 0, -.045);
00446         GLHelper::drawFilledCircle(1);
00447         glScaled(.7, 2, 1);
00448         glTranslated(0, 0, .045);
00449         glTranslated(0, 0, -.04);
00450         glColor3dv(lighter);
00451         GLHelper::drawFilledCircle(1);
00452         glTranslated(0, 0, .04);
00453         glPopMatrix();
00454     }
00455     break;
00456     case SVS_PASSENGER:
00457     case SVS_PASSENGER_SEDAN:
00458     case SVS_PASSENGER_HATCHBACK:
00459     case SVS_PASSENGER_WAGON:
00460         drawPoly(vehiclePoly_PassengerCarBody, -4);
00461         glColor3dv(lighter);
00462         drawPoly(vehiclePoly_PassengerCarBodyFront, -4.5);
00463         glColor3d(0, 0, 0);
00464         drawPoly(vehiclePoly_PassengerFrontGlass, -4.5);
00465         break;
00466     case SVS_PASSENGER_VAN:
00467         drawPoly(vehiclePoly_PassengerVanBody, -4);
00468         glColor3dv(lighter);
00469         drawPoly(vehiclePoly_PassengerVanBodyFront, -4.5);
00470         glColor3d(0, 0, 0);
00471         drawPoly(vehiclePoly_PassengerVanFrontGlass, -4.5);
00472         drawPoly(vehiclePoly_PassengerVanRightGlass, -4.5);
00473         drawPoly(vehiclePoly_PassengerVanLeftGlass, -4.5);
00474         drawPoly(vehiclePoly_PassengerVanBackGlass, -4.5);
00475         break;
00476     case SVS_DELIVERY:
00477         drawPoly(vehiclePoly_PassengerVanBody, -4);
00478         glColor3dv(lighter);
00479         drawPoly(vehiclePoly_PassengerVanBodyFront, -4.5);
00480         glColor3d(0, 0, 0);
00481         drawPoly(vehiclePoly_PassengerVanFrontGlass, -4.5);
00482         drawPoly(vehiclePoly_DeliveryMediumRightGlass, -4.5);
00483         drawPoly(vehiclePoly_DeliveryMediumLeftGlass, -4.5);
00484         break;
00485     case SVS_TRANSPORT:
00486     case SVS_TRANSPORT_SEMITRAILER:
00487     case SVS_TRANSPORT_1TRAILER:
00488         glScaled(1./(length-veh.getVehicleType().getGuiOffset()), 1, 1.);
00489         drawPoly(vehiclePoly_TransportBody, -4);
00490         glColor3d(0, 0, 0);
00491         drawPoly(vehiclePoly_TransportFrontGlass, -4.5);
00492         drawPoly(vehiclePoly_TransportRightGlass, -4.5);
00493         drawPoly(vehiclePoly_TransportLeftGlass, -4.5);
00494         break;
00495     case SVS_BUS:
00496     case SVS_BUS_CITY: {
00497         SUMOReal ml = length - veh.getVehicleType().getGuiOffset();
00498         glScaled(1./(length-veh.getVehicleType().getGuiOffset()), 1, 1.);
00499         glTranslated(0, 0, -.04);
00500         glBegin(GL_TRIANGLE_FAN);
00501         glVertex2d(ml/2., 0);
00502         glVertex2d(0, 0);
00503         glVertex2d(0, -.45);
00504         glVertex2d(0+.05, -.5);
00505         glVertex2d(ml-.05, -.5);
00506         glVertex2d(ml, -.45);
00507         glVertex2d(ml, .45);
00508         glVertex2d(ml-.05, .5);
00509         glVertex2d(0+.05, .5);
00510         glVertex2d(0, .45);
00511         glVertex2d(0, 0);
00512         glEnd();
00513         glTranslated(0, 0, .04);
00514 
00515         glTranslated(0, 0, -.045);
00516         glColor3d(0, 0, 0);
00517         glBegin(GL_QUADS);
00518         glVertex2d(0+.05, .48);
00519         glVertex2d(0+.05, -.48);
00520         glVertex2d(0+.15, -.48);
00521         glVertex2d(0+.15, .48);
00522 
00523         glVertex2d(ml-.1, .45);
00524         glVertex2d(ml-.1, -.45);
00525         glVertex2d(ml-.05, -.45);
00526         glVertex2d(ml-.05, .45);
00527 
00528         glVertex2d(0+.20, .49);
00529         glVertex2d(0+.20, .45);
00530         glVertex2d(ml-.20, .45);
00531         glVertex2d(ml-.20, .49);
00532 
00533         glVertex2d(0+.20, -.49);
00534         glVertex2d(0+.20, -.45);
00535         glVertex2d(ml-.20, -.45);
00536         glVertex2d(ml-.20, -.49);
00537 
00538         glEnd();
00539         glTranslated(0, 0, .045);
00540     }
00541     break;
00542     case SVS_BUS_OVERLAND:
00543         glScaled(1./(length-veh.getVehicleType().getGuiOffset()), 1, 1.);
00544         glTranslated(0, 0, -.04);
00545         glBegin(GL_TRIANGLE_FAN);
00546         glVertex2d(length/2., 0);
00547         glVertex2d(0, 0);
00548         glVertex2d(0, -.45);
00549         glVertex2d(.05, -.5);
00550         glVertex2d(length-.05, -.5);
00551         glVertex2d(length, -.45);
00552         glVertex2d(length, .45);
00553         glVertex2d(length-.05, .5);
00554         glVertex2d(.05, .5);
00555         glVertex2d(0, .45);
00556         glVertex2d(0, 0);
00557         glEnd();
00558         glTranslated(0, 0, .04);
00559         break;
00560     case SVS_RAIL:
00561         break;
00562     case SVS_RAIL_LIGHT:
00563         break;
00564     case SVS_RAIL_CITY:
00565         break;
00566     case SVS_RAIL_SLOW:
00567         break;
00568     case SVS_RAIL_FAST:
00569         break;
00570     case SVS_RAIL_CARGO:
00571         break;
00572     case SVS_E_VEHICLE:
00573         drawPoly(vehiclePoly_EVehicleBody, -4);
00574         glColor3d(0, 0, 0);
00575         drawPoly(vehiclePoly_EVehicleFrontGlass, -4.5);
00576         glTranslated(0, 0, -.048);
00577         glColor3dv(current);
00578         glBegin(GL_QUADS);
00579         glVertex2d(.3, .5);
00580         glVertex2d(.35, .5);
00581         glVertex2d(.35, -.5);
00582         glVertex2d(.3, -.5);
00583 
00584         glVertex2d(.3, -.05);
00585         glVertex2d(.7, -.05);
00586         glVertex2d(.7, .05);
00587         glVertex2d(.3, .05);
00588 
00589         glVertex2d(.7, .5);
00590         glVertex2d(.65, .5);
00591         glVertex2d(.65, -.5);
00592         glVertex2d(.7, -.5);
00593         glEnd();
00594         glTranslated(0, 0, .048);
00595         //drawPoly(vehiclePoly_EVehicleBackGlass, -4.5);
00596         break;
00597     default: // same as passenger
00598         drawPoly(vehiclePoly_PassengerCarBody, -4);
00599         glColor3d(1, 1, 1);
00600         drawPoly(vehiclePoly_PassengerCarBodyFront, -4.5);
00601         glColor3d(0, 0, 0);
00602         drawPoly(vehiclePoly_PassengerFrontGlass, -4.5);
00603         break;
00604     }
00605 
00606     switch (shape) {
00607     case SVS_PEDESTRIAN:
00608         break;
00609     case SVS_BICYCLE:
00610         //glScaled(length-veh.getVehicleType().getGuiOffset(), 1, 1.);
00611         glBegin(GL_TRIANGLE_FAN);
00612         glVertex2d(1/2., 0);
00613         glVertex2d(0, 0);
00614         glVertex2d(0, -.03);
00615         glVertex2d(0+.05, -.05);
00616         glVertex2d(1-.05, -.05);
00617         glVertex2d(1, -.03);
00618         glVertex2d(1, .03);
00619         glVertex2d(1-.05, .05);
00620         glVertex2d(0+.05, .05);
00621         glVertex2d(0, .03);
00622         glVertex2d(0, 0);
00623         glEnd();
00624         break;
00625     case SVS_MOTORCYCLE:
00626         //glScaled(length-veh.getVehicleType().getGuiOffset(), 1, 1.);
00627         glBegin(GL_TRIANGLE_FAN);
00628         glVertex2d(1/2., 0);
00629         glVertex2d(0, 0);
00630         glVertex2d(0, -.03);
00631         glVertex2d(0+.05, -.2);
00632         glVertex2d(1-.05, -.2);
00633         glVertex2d(1, -.03);
00634         glVertex2d(1, .03);
00635         glVertex2d(1-.05, .2);
00636         glVertex2d(0+.05, .2);
00637         glVertex2d(0, .03);
00638         glVertex2d(0, 0);
00639         glEnd();
00640         break;
00641     case SVS_PASSENGER:
00642     case SVS_PASSENGER_SEDAN:
00643         drawPoly(vehiclePoly_PassengerSedanRightGlass, -4.5);
00644         drawPoly(vehiclePoly_PassengerSedanLeftGlass, -4.5);
00645         drawPoly(vehiclePoly_PassengerSedanBackGlass, -4.5);
00646         break;
00647     case SVS_PASSENGER_HATCHBACK:
00648         drawPoly(vehiclePoly_PassengerHatchbackRightGlass, -4.5);
00649         drawPoly(vehiclePoly_PassengerHatchbackLeftGlass, -4.5);
00650         drawPoly(vehiclePoly_PassengerHatchbackBackGlass, -4.5);
00651         break;
00652     case SVS_PASSENGER_WAGON:
00653         drawPoly(vehiclePoly_PassengerWagonRightGlass, -4.5);
00654         drawPoly(vehiclePoly_PassengerWagonLeftGlass, -4.5);
00655         drawPoly(vehiclePoly_PassengerWagonBackGlass, -4.5);
00656         break;
00657     case SVS_PASSENGER_VAN:
00658     case SVS_DELIVERY:
00659         break;
00660     case SVS_TRANSPORT:
00661         glColor3dv(current);
00662         GLHelper::drawBoxLine(Position2D(2.3, 0), 90., length-veh.getVehicleType().getGuiOffset()-2.3, .5);
00663         break;
00664     case SVS_TRANSPORT_SEMITRAILER:
00665         glColor3dv(current);
00666         GLHelper::drawBoxLine(Position2D(2.8, 0), 90., length-veh.getVehicleType().getGuiOffset()-2.8, .5);
00667         break;
00668     case SVS_TRANSPORT_1TRAILER: {
00669         glColor3dv(current);
00670         SUMOReal l = length-veh.getVehicleType().getGuiOffset()-2.3;
00671         l = l/2.;
00672         GLHelper::drawBoxLine(Position2D(2.3, 0), 90., l, .5);
00673         GLHelper::drawBoxLine(Position2D(2.3+l+.5, 0), 90., l-.5, .5);
00674         break;
00675     }
00676     case SVS_BUS:
00677     case SVS_BUS_CITY:
00678     case SVS_BUS_CITY_FLEXIBLE:
00679     case SVS_BUS_OVERLAND:
00680     case SVS_RAIL:
00681     case SVS_RAIL_LIGHT:
00682     case SVS_RAIL_CITY:
00683     case SVS_RAIL_SLOW:
00684     case SVS_RAIL_FAST:
00685     case SVS_RAIL_CARGO:
00686     case SVS_E_VEHICLE:
00687         break;
00688     default: // same as passenger/sedan
00689         drawPoly(vehiclePoly_PassengerSedanRightGlass, -4.5);
00690         drawPoly(vehiclePoly_PassengerSedanLeftGlass, -4.5);
00691         drawPoly(vehiclePoly_PassengerSedanBackGlass, -4.5);
00692         break;
00693     }
00694     /*
00695     glBegin(GL_TRIANGLE_FAN);
00696     glVertex2d(.5,.5); // center - strip begin
00697     glVertex2d(0,    .5); // center, front
00698     glVertex2d(0,    .8); // ... clockwise ... (vehicle right side)
00699     glVertex2d(0.08, .94);
00700     glVertex2d(0.25, 1.);
00701     glVertex2d(0.95, 1.);
00702     glVertex2d(1.,   .9);
00703     glVertex2d(1.,   .1); // (vehicle left side)
00704     glVertex2d(0.95, 0.);
00705     glVertex2d(0.25, 0.);
00706     glVertex2d(0.08, .06);
00707     glVertex2d(0,    .2); //
00708     glVertex2d(0,    .5); // center, front (close)
00709     glEnd();
00710 
00711     glPolygonOffset(0, -4.5);
00712     glColor3d(1, 1, 1); // front
00713     glBegin(GL_TRIANGLE_FAN);
00714     glVertex2d(0.1,0.5);
00715     glVertex2d(0.025,0.5);
00716     glVertex2d(0.025,0.75);
00717     glVertex2d(0.27,0.9);
00718     glVertex2d(0.27,0.1);
00719     glVertex2d(0.025,0.25);
00720     glVertex2d(0.025,0.5);
00721     glEnd();
00722 
00723     glColor3d(0, 0, 0); // front glass
00724     glBegin(GL_TRIANGLE_FAN);
00725     glVertex2d(0.35,0.5);
00726     glVertex2d(0.3,0.5);
00727     glVertex2d(0.3,0.9);
00728     glVertex2d(0.43,0.8);
00729     glVertex2d(0.43,0.2);
00730     glVertex2d(0.3,0.1);
00731     glVertex2d(0.3,0.5);
00732     glEnd();
00733 
00734     glBegin(GL_TRIANGLE_FAN); // back glass
00735     glVertex2d(0.92,0.5);
00736     glVertex2d(0.90,0.5);
00737     glVertex2d(0.90,0.8);
00738     glVertex2d(0.95,0.9);
00739     glVertex2d(0.95,0.1);
00740     glVertex2d(0.90,0.2);
00741     glVertex2d(0.90,0.5);
00742     glEnd();
00743 
00744     glBegin(GL_TRIANGLE_FAN); // right glass
00745     glVertex2d(0.36,0.07);
00746     glVertex2d(0.34,0.03);
00747     glVertex2d(0.94,0.03);
00748     glVertex2d(0.87,0.13);
00749     glVertex2d(0.45,0.13);
00750     glVertex2d(0.34,0.03);
00751     glEnd();
00752 
00753     glBegin(GL_TRIANGLE_FAN); // left glass
00754     glVertex2d(0.36,1.-0.07);
00755     glVertex2d(0.34,1.-0.03);
00756     glVertex2d(0.94,1.-0.03);
00757     glVertex2d(0.87,1.-0.13);
00758     glVertex2d(0.45,1.-0.13);
00759     glVertex2d(0.34,1.-0.03);
00760     glEnd();
00761     */
00762 
00763     glPopMatrix();
00764 }

void drawAction_drawVehicleAsTrianglePlus ( const GUIVehicle veh,
SUMOReal  upscale 
) [inline]

Definition at line 332 of file GUIVehicle.cpp.

References MSVehicleType::getLength(), MSVehicle::getVehicleType(), and SUMOReal.

Referenced by GUIVehicle::drawGL().

00332                                                                               {
00333     SUMOReal length = veh.getVehicleType().getLength();
00334     glPushMatrix();
00335     glScaled(upscale, upscale, 1);
00336     if (length<8) {
00337         glScaled(1, length, 1);
00338         glBegin(GL_TRIANGLES);
00339         glVertex2d(0, 0);
00340         glVertex2d(0-1.25, 1);
00341         glVertex2d(0+1.25, 1);
00342         glEnd();
00343     } else {
00344         glBegin(GL_TRIANGLES);
00345         glVertex2d(0, 0);
00346         glVertex2d(0-1.25, 0+2);
00347         glVertex2d(0+1.25, 0+2);
00348         glVertex2d(0-1.25, 2);
00349         glVertex2d(0-1.25, length);
00350         glVertex2d(0+1.25, length);
00351         glVertex2d(0+1.25, 2);
00352         glVertex2d(0-1.25, 2);
00353         glVertex2d(0+1.25, length);
00354         glEnd();
00355     }
00356     glPopMatrix();
00357 }

void drawAction_drawVehicleBlinker ( const GUIVehicle veh  )  [inline]

Definition at line 771 of file GUIVehicle.cpp.

References BLINKER_POS_BACK, BLINKER_POS_FRONT, MSCORN::CORN_VEH_BLINKER, GLHelper::drawFilledCircle(), MSVehicle::getCORNIntValue(), MSVehicleType::getGuiOffset(), MSVehicleType::getGuiWidth(), MSVehicleType::getLength(), and MSVehicle::getVehicleType().

Referenced by GUIVehicle::drawGL().

00771                                                      {
00772     double dir = (double) veh.getCORNIntValue(MSCORN::CORN_VEH_BLINKER)*veh.getVehicleType().getGuiWidth()*.5;
00773     if (dir==0) {
00774         return;
00775     }
00776     if (veh.getVehicleType().getGuiWidth()<.5) {
00777         return;
00778     }
00779     glColor3d(1.f, .8f, 0);
00780     glPushMatrix();
00781     glTranslated(dir, BLINKER_POS_FRONT+veh.getVehicleType().getGuiOffset(), 0);
00782     GLHelper::drawFilledCircle(.5, 6);
00783     glPopMatrix();
00784     glPushMatrix();
00785     glTranslated(dir, veh.getVehicleType().getLength()-BLINKER_POS_BACK, 0);
00786     GLHelper::drawFilledCircle(.5, 6);
00787     glPopMatrix();
00788 }

void drawAction_drawVehicleName ( const GUIVehicle veh,
SUMOReal  size 
) [inline]

Definition at line 792 of file GUIVehicle.cpp.

References MSVehicleType::getLength(), GUIVehicle::getMicrosimID(), MSVehicle::getVehicleType(), pfdkGetStringWidth(), pfDrawString(), pfSetPosition(), pfSetScale(), and SUMOReal.

Referenced by GUIVehicle::drawGL().

00792                                                                  {
00793     glPushMatrix();
00794     glTranslated(0, veh.getVehicleType().getLength() / 2., 0);
00795     glTranslated(0, 0, -.07);
00796     glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
00797     pfSetPosition(0, 0);
00798     pfSetScale(size);
00799     SUMOReal w = pfdkGetStringWidth(veh.getMicrosimID().c_str());
00800     glRotated(180, 0, 1, 0);
00801     glTranslated(-w/2., 0.4, 0);
00802     pfDrawString(veh.getMicrosimID().c_str());
00803     glPopMatrix();
00804 }

void drawPoly ( double *  poses,
SUMOReal  offset 
)

Definition at line 384 of file GUIVehicle.cpp.

Referenced by drawAction_drawVehicleAsPoly().

00384                                          {
00385     glPushMatrix();
00386     glTranslated(0, 0, offset*.01);
00387     glPolygonOffset(0, offset);
00388     glBegin(GL_TRIANGLE_FAN);
00389     int i = 0;
00390     while (poses[i]>-999) {
00391         glVertex2d(poses[i],poses[i+1]);
00392         i = i + 2;
00393     }
00394     glEnd();
00395     glPopMatrix();
00396 }

FXDEFMAP ( GUIVehicle::GUIVehiclePopupMenu   ) 

FXIMPLEMENT ( GUIVehicle::GUIVehiclePopupMenu  ,
GUIGLObjectPopupMenu  ,
GUIVehiclePopupMenuMap  ,
ARRAYNUMBER(GUIVehiclePopupMenuMap)   
)


Variable Documentation

double vehiclePoly_DeliveryMediumLeftGlass[] = { 0.21,.43, 0.20,.47, 0.38,.47, 0.38,.37, 0.31,.37, 0.20,.47, -10000 }

Definition at line 104 of file GUIVehicle.cpp.

double vehiclePoly_DeliveryMediumRightGlass[] = { 0.21,-.43, 0.20,-.47, 0.38,-.47, 0.38,-.37, 0.31,-.37, 0.20,-.47, -10000 }

Definition at line 103 of file GUIVehicle.cpp.

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 }

Definition at line 114 of file GUIVehicle.cpp.

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 }

Definition at line 111 of file GUIVehicle.cpp.

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 }

Definition at line 112 of file GUIVehicle.cpp.

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 }

Definition at line 84 of file GUIVehicle.cpp.

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 }

Definition at line 85 of file GUIVehicle.cpp.

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 }

Definition at line 91 of file GUIVehicle.cpp.

double vehiclePoly_PassengerHatchbackLeftGlass[] = { 0.36,.43, 0.34,.47, 0.94,.47, 0.80,.37, 0.45,.37, 0.34,.47, -10000 }

Definition at line 90 of file GUIVehicle.cpp.

double vehiclePoly_PassengerHatchbackRightGlass[] = { 0.36,-.43, 0.34,-.47, 0.94,-.47, 0.80,-.37, 0.45,-.37, 0.34,-.47, -10000 }

Definition at line 89 of file GUIVehicle.cpp.

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 }

Definition at line 88 of file GUIVehicle.cpp.

double vehiclePoly_PassengerSedanLeftGlass[] = { 0.36,.43, 0.34,.47, 0.77,.47, 0.67,.37, 0.45,.37, 0.34,.47, -10000 }

Definition at line 87 of file GUIVehicle.cpp.

double vehiclePoly_PassengerSedanRightGlass[] = { 0.36,-.43, 0.34,-.47, 0.77,-.47, 0.67,-.37, 0.45,-.37, 0.34,-.47, -10000 }

Definition at line 86 of file GUIVehicle.cpp.

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 }

Definition at line 101 of file GUIVehicle.cpp.

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 }

Definition at line 96 of file GUIVehicle.cpp.

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 }

Definition at line 97 of file GUIVehicle.cpp.

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 }

Definition at line 98 of file GUIVehicle.cpp.

double vehiclePoly_PassengerVanLeftGlass[] = { 0.36,.43, 0.20,.47, 0.98,.47, 0.91,.37, 0.31,.37, 0.20,.47, -10000 }

Definition at line 100 of file GUIVehicle.cpp.

double vehiclePoly_PassengerVanRightGlass[] = { 0.36,-.43, 0.20,-.47, 0.98,-.47, 0.91,-.37, 0.31,-.37, 0.20,-.47, -10000 }

Definition at line 99 of file GUIVehicle.cpp.

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 }

Definition at line 94 of file GUIVehicle.cpp.

double vehiclePoly_PassengerWagonLeftGlass[] = { 0.36,.43, 0.34,.47, 0.94,.47, 0.87,.37, 0.45,.37, 0.34,.47, -10000 }

Definition at line 93 of file GUIVehicle.cpp.

double vehiclePoly_PassengerWagonRightGlass[] = { 0.36,-.43, 0.34,-.47, 0.94,-.47, 0.87,-.37, 0.45,-.37, 0.34,-.47, -10000 }

Definition at line 92 of file GUIVehicle.cpp.

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 }

Definition at line 106 of file GUIVehicle.cpp.

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 }

Definition at line 107 of file GUIVehicle.cpp.

double vehiclePoly_TransportLeftGlass[] = { 0.36,.47, 0.10,.48, 1.25,.48, 1.25,.4, 0.3,.4, 0.10,.48, -10000 }

Definition at line 109 of file GUIVehicle.cpp.

double vehiclePoly_TransportRightGlass[] = { 0.36,-.47, 0.10,-.48, 1.25,-.48, 1.25,-.4, 0.3,-.4, 0.10,-.48, -10000 }

Definition at line 108 of file GUIVehicle.cpp.


Generated on Wed May 5 00:06:38 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6