GLWireframe.cpp

gehe zur Dokumentation dieser Datei
00001 
00006 #include <qcursor.h>
00007 #include <qfont.h>
00008 
00009 #include <math.h>
00010 #include <iostream>
00011 using namespace std; 
00012 
00013 #include "GLWireframe.h"
00014 
00015 //------------------------------------------------------------------------------------------------------------------
00030 GLWireframe::GLWireframe( QWidget* parent, const char* name, QGLWidget *share, WFlags f, Spur** spurenliste, long int anzahlSpuren, Liste *kreuzungsliste ) : QGLWidget( parent, name, share, f )
00031 {
00032     clear();
00033     
00034     spurenliste_ = spurenliste;
00035     anzahlSpuren_ = anzahlSpuren;
00036         kreuzungsliste_ = kreuzungsliste;
00037     
00038     erzeugeParameter();
00039         ladeWerkseinstellungen();
00040         initializeGL();
00041 }
00042 //------------------------------------------------------------------------------------------------------------------
00043 
00044 
00045 
00046 //------------------------------------------------------------------------------------------------------------------
00053 void GLWireframe::erzeugeParameter()
00054 {
00055  // Extrahiere die maximale Ausdehnung in alle Richtungen
00056  int i(0);
00057  
00058  for( i = 0; i < anzahlSpuren_; i++ )
00059  {
00060   if( maximaleKoordinaten_[0] < spurenliste_[i]->gibKoordinaten().x )
00061    maximaleKoordinaten_[0] = spurenliste_[i]->gibKoordinaten().x;
00062   if( maximaleKoordinaten_[1] < spurenliste_[i]->gibKoordinaten().y )
00063    maximaleKoordinaten_[1] = spurenliste_[i]->gibKoordinaten().y;
00064   if( maximaleKoordinaten_[2] < spurenliste_[i]->gibKoordinaten().z )
00065    maximaleKoordinaten_[2] = spurenliste_[i]->gibKoordinaten().z;
00066   
00067   if( minimaleKoordinaten_[0] > spurenliste_[i]->gibKoordinaten().x )
00068    minimaleKoordinaten_[0] = spurenliste_[i]->gibKoordinaten().x;
00069   if( minimaleKoordinaten_[1] > spurenliste_[i]->gibKoordinaten().y )
00070    minimaleKoordinaten_[1] = spurenliste_[i]->gibKoordinaten().y;
00071   if( minimaleKoordinaten_[2] > spurenliste_[i]->gibKoordinaten().z )
00072    minimaleKoordinaten_[2] = spurenliste_[i]->gibKoordinaten().z;
00073  }
00074  
00075  if( anzahlSpuren_!= 0 ){
00076         // Errechne eine Verschiebung, damit das Zentrum des Universums immer in (0|0|0) liegt
00077         verschiebungsKoordinaten_[0] = (maximaleKoordinaten_[0] + minimaleKoordinaten_[0]) / 2;
00078         verschiebungsKoordinaten_[1] = (maximaleKoordinaten_[1] + minimaleKoordinaten_[1]) / 2;
00079         verschiebungsKoordinaten_[2] = (maximaleKoordinaten_[2] + minimaleKoordinaten_[2]) / 2;
00080  }
00081 }
00082 //------------------------------------------------------------------------------------------------------------------
00083 
00084 
00085 
00086 //------------------------------------------------------------------------------------------------------------------
00107 GLWireframe::GLWireframe( QWidget* parent, const char* name, QGLWidget *share, WFlags f , double xRotD, double yRotD, double zRotD, 
00108         double xKameraD, double yKameraD, double zKameraD, Spur** spurenliste, long int anzahlSpuren, Liste *kreuzungsliste  ) : QGLWidget( parent, name, share, f )
00109 {
00110  clear();
00111 
00112  spurenliste_ = spurenliste;
00113  anzahlSpuren_ = anzahlSpuren;
00114  kreuzungsliste_ = kreuzungsliste;
00115     
00116  standardxRot_ = xRotD;
00117  standardyRot_ = yRotD;
00118  standardzRot_ = zRotD;
00119     
00120  standardpunktKamera_[0] = xKameraD;
00121  standardpunktKamera_[1] = yKameraD;
00122  standardpunktKamera_[2] = zKameraD;
00123     
00124  standardpunktReferenz_[0] = xKameraD;
00125  standardpunktReferenz_[1] = yKameraD;
00126  standardpunktReferenz_[2] = zKameraD;
00127     
00128  standardvectorKameraOben_[0] = 0;
00129  standardvectorKameraOben_[1] = 0;
00130  standardvectorKameraOben_[2] = 1;
00131  
00132  erzeugeParameter();
00133  ladeStandardwerte();
00134  initializeGL();
00135 }
00136 //------------------------------------------------------------------------------------------------------------------
00137 
00138 
00139 
00140 //------------------------------------------------------------------------------------------------------------------
00147 GLWireframe::~GLWireframe(){
00148         // makeCurrent();
00149 }
00150 //------------------------------------------------------------------------------------------------------------------
00151 
00152 
00153 
00154 //------------------------------------------------------------------------------------------------------------------
00161 void GLWireframe::paintGL()
00162 {
00163  Fahrzeug *fahrzeug;
00164  int i = 0;
00165 
00166  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00167  transform();
00168  
00169  glTranslatef( -1*verschiebungsKoordinaten_[0], -1*verschiebungsKoordinaten_[1],-1*verschiebungsKoordinaten_[2] );
00170 
00171  // Liste Zeichnen
00172  glCallList( list_ );
00173  
00174  // Dastellen aller Haltelinien
00175  for( i = 0; i < anzahlSpuren_; i++ )
00176   zeichneHaltelinie( spurenliste_[i] );
00177 
00178  // Darstellen alle Fahrzeuge
00179  if( fahrzeugliste_ != 0 )
00180  {
00181   fahrzeugliste_->geheZuErsten();
00182   while( !fahrzeugliste_->istEnde() )
00183   {
00184    fahrzeugliste_->geheZuNaechsten();
00185    fahrzeug = (Fahrzeug *) fahrzeugliste_->gibDaten();
00186    if( !fahrzeug->sollEntferntWerden() )
00187     zeichneFahrzeug( fahrzeug );
00188   }
00189  }
00190  
00191  glTranslatef( verschiebungsKoordinaten_[0], verschiebungsKoordinaten_[1],verschiebungsKoordinaten_[2] );
00192 }
00193 //------------------------------------------------------------------------------------------------------------------
00194 
00195 
00196 
00197 //------------------------------------------------------------------------------------------------------------------
00207 void GLWireframe::initializeGL()
00208 {
00209  // Setzte die Hintergrundfarbe auf den Standard
00210  glClearColor( 1.0, 1.0, 1.0, 1.0 );
00211  glEnable( GL_NORMALIZE );
00212  
00213  if( anzahlSpuren_ != 0 ){
00214         // Liste aller nicht veraenderlichen Objekte anlegen
00215         erzeugeZeichenliste();
00216  }
00217  
00218  /*Loeschfarbe fuer Bildschirm
00219  glClearColor( 1.0, 1.0, 1.0, 1.0 );
00220  //z-Puffer-Test aktivieren:
00221  glEnable( GL_DEPTH_TEST );
00222  //Gouraud-Shading fuer Polygone
00223  glShadeModel( GL_SMOOTH );
00224  //Polygone vollflaechig zeichnen
00225  glPolygonMode( GL_FRONT_AND_BACK, GL_FILL );
00226  //Polygonrueckseiten werden nicht dargestellt (Backface-Culling)
00227  glCullFace( GL_BACK );
00228  glEnable( GL_CULL_FACE );
00229  //Beleuchtungsrechnung und eine weisse Lichtquelle aktivieren
00230  glEnable(GL_LIGHTING);
00231  GLfloat light_amb[]  = { 0.3, 0.3, 0.3, 1.0 };
00232  GLfloat light_diff[] = { 0.2, 0.2, 0.2, 1.0 };
00233  GLfloat light_spec[] = { 0.1, 0.1, 0.1, 1.0 };
00234  glLightfv( GL_LIGHT0, GL_AMBIENT, light_amb );
00235  glLightfv( GL_LIGHT0, GL_DIFFUSE, light_diff );
00236  glLightfv( GL_LIGHT0, GL_SPECULAR, light_spec );
00237  glEnable( GL_LIGHT0 );
00238  glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE );
00239  //glLightModeli( GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE );
00240  glEnable( GL_NORMALIZE );*/
00241  
00242 }
00243 //------------------------------------------------------------------------------------------------------------------
00244 
00245 
00246 
00247 //------------------------------------------------------------------------------------------------------------------
00259 void GLWireframe::resizeGL( int breite, int hoehe )
00260 {
00261     if( breite > hoehe )
00262       hoehe = breite;
00263     else
00264       breite = hoehe;
00265 
00266     glViewport( 0, 0, breite, hoehe );
00267     glMatrixMode(GL_PROJECTION);
00268     glLoadIdentity();
00269  gluPerspective( 90.0, 1, 0, 20.0 );
00270  
00271  // ohne Frustum unter Mac OS kein Bild
00272  // mit Frustum unter Windows kein Bild
00273 #ifndef _WIN32 && #ifndef WIN32 && #ifndef __WIN32__
00274  glFrustum( -1.0, 1.0, -1.0, 1.0, 1.0, 10000.0 );
00275 #endif
00276 
00277  glMatrixMode(GL_MODELVIEW);
00278     glLoadIdentity();
00279     glTranslatef( 0.0, 0.0, -40.0 );
00280 }
00281 //------------------------------------------------------------------------------------------------------------------
00282 
00283 
00284 
00285 //------------------------------------------------------------------------------------------------------------------
00292 void GLWireframe::transform()
00293 {
00294   glLoadIdentity();
00295 
00296   // Zoomen durchfuehren (durch Kameraverschiebung)
00297   gluLookAt(punktKamera_[0],punktKamera_[1], punktKamera_[2]+(gibMaximaleAusdehnung()),
00298    punktReferenz_[0], punktReferenz_[1], punktReferenz_[2], 
00299    vectorKameraOben_[0], vectorKameraOben_[1], vectorKameraOben_[2] );
00300 
00301   // Rotationen durchfuehren (direkt mit dem Objekt)
00302   glRotatef( xRot_, 1.0, 0.0, 0.0 );
00303   glRotatef( yRot_, 0.0, 1.0, 0.0 );
00304   glRotatef( zRot_, 0.0, 0.0, 1.0 );
00305 }
00306 //------------------------------------------------------------------------------------------------------------------
00307 
00308 
00309 
00310 //------------------------------------------------------------------------------------------------------------------
00319 void GLWireframe::setzeXRotation( double grad )
00320 {
00321     xRot_ = (GLfloat)fmod(grad, 360.0);
00322  
00323     updateGL();
00324 }
00325 //------------------------------------------------------------------------------------------------------------------
00326 
00327 
00328 
00329 //------------------------------------------------------------------------------------------------------------------
00338 void GLWireframe::setzeYRotation( double grad )
00339 {
00340     yRot_ = (GLfloat)fmod(grad, 360.0);
00341  
00342     updateGL();
00343 }
00344 //------------------------------------------------------------------------------------------------------------------
00345 
00346 
00347 
00348 //------------------------------------------------------------------------------------------------------------------
00357 void GLWireframe::setzeZRotation( double grad )
00358 {
00359     zRot_ = (GLfloat)fmod(grad, 360.0);
00360  
00361     updateGL();
00362 }
00363 //------------------------------------------------------------------------------------------------------------------
00364 
00365 
00366 
00367 //------------------------------------------------------------------------------------------------------------------
00378 void GLWireframe::setzeRotationImpulse( double x, double y, double z )
00379 {
00380     setzeXRotation( xRot_ + 180*x );
00381     setzeYRotation( yRot_ + 180*y );
00382     setzeZRotation( zRot_ - 180*z );
00383 }
00384 //------------------------------------------------------------------------------------------------------------------
00385 
00386 
00387 
00388 //------------------------------------------------------------------------------------------------------------------
00397 void GLWireframe::setzeZoom( double aenderung )
00398 {
00399   aenderung = aenderung / 100 * gibMaximaleAusdehnung();
00400   
00401   punktKamera_[2] = punktKamera_[2] - aenderung;
00402   punktReferenz_[2] = punktReferenz_[2] - aenderung;
00403   
00404   updateGL();
00405 }
00406 //------------------------------------------------------------------------------------------------------------------
00407 
00408 
00409 
00410 //------------------------------------------------------------------------------------------------------------------
00420 void GLWireframe::setzeTranslationImpulse( double x, double y )
00421 {
00422   x = x / 700 * gibMaximaleAusdehnung();
00423   y = y / 700 * gibMaximaleAusdehnung();
00424 
00425   punktKamera_[0] = punktKamera_[0] - x;
00426   punktKamera_[1] = punktKamera_[1] + y;
00427 
00428   punktReferenz_[0] = punktReferenz_[0] - x;
00429   punktReferenz_[1] = punktReferenz_[1] + y;
00430 
00431   updateGL();
00432 }
00433 //------------------------------------------------------------------------------------------------------------------
00434 
00435 
00436 
00437 //------------------------------------------------------------------------------------------------------------------
00446 void GLWireframe::mousePressEvent( QMouseEvent *event )
00447 {
00448     event->accept();
00449     oldPos_ = event->pos();
00450 }
00451 //------------------------------------------------------------------------------------------------------------------
00452 
00453 
00454 
00455 //------------------------------------------------------------------------------------------------------------------
00464 void GLWireframe::mouseReleaseEvent( QMouseEvent *event )
00465 {
00466     event->accept();
00467     oldPos_ = event->pos();
00468 }
00469 //------------------------------------------------------------------------------------------------------------------
00470 
00471 
00472 
00473 //------------------------------------------------------------------------------------------------------------------
00482 void GLWireframe::mouseMoveEvent( QMouseEvent *event )
00483 {
00484     event->accept();
00485  
00486     double dx = event->x() - oldPos_.x();
00487     double dy = event->y() - oldPos_.y();
00488 
00489     oldPos_ = event->pos();
00490 
00491     double rx = dx / width();
00492     double ry = dy / height();
00493  
00494     if( maussteuerung_ == 1 )
00495     {
00496  if ( event->state() == (LeftButton | RightButton) )
00497                       setzeRotationImpulse( -ry, rx, 0 );
00498                 else if ( event->state() == LeftButton )
00499                 {
00500                       setzeZoom( dy );
00501                       setzeRotationImpulse( 0, 0, -rx );
00502                 }
00503                 else if ( event->state() == RightButton )
00504                       setzeTranslationImpulse( dx, dy ); 
00505      }
00506      else
00507      {
00508                 if ( event->state() == MidButton )
00509                       setzeRotationImpulse( 0, 0, -rx );
00510                 else if ( event->state() == LeftButton ) 
00511                       setzeTranslationImpulse( dx, dy );
00512                 else if ( event->state() == RightButton )
00513                       setzeRotationImpulse( -ry, rx, 0 );
00514      }
00515 }
00516 //------------------------------------------------------------------------------------------------------------------
00517 
00518 
00519 //------------------------------------------------------------------------------------------------------------------
00528 void GLWireframe::wheelEvent( QWheelEvent *event )
00529 {
00530     if( maussteuerung_ == 2 )
00531     {
00532  event->accept();
00533                 setzeZoom( event->delta() / 100 );
00534     } 
00535 }
00536 
00537 //------------------------------------------------------------------------------------------------------------------
00546 double GLWireframe::gibXRot()
00547 {
00548     return xRot_;
00549 }
00550 //------------------------------------------------------------------------------------------------------------------
00551 
00552 
00553 
00554 //------------------------------------------------------------------------------------------------------------------
00563 double GLWireframe::gibYRot()
00564 {
00565     return yRot_;
00566 }
00567 //------------------------------------------------------------------------------------------------------------------
00568 
00569 
00570 
00571 //------------------------------------------------------------------------------------------------------------------
00580 double GLWireframe::gibZRot( )
00581 {
00582     return zRot_;
00583 } 
00584 //------------------------------------------------------------------------------------------------------------------
00585 
00586 
00587 
00588 //------------------------------------------------------------------------------------------------------------------
00597 double GLWireframe::gibXKamera( )
00598 {
00599     return punktKamera_[0];
00600 }
00601 //------------------------------------------------------------------------------------------------------------------
00602 
00603 
00604 
00605 //------------------------------------------------------------------------------------------------------------------
00614 double GLWireframe::gibYKamera( )
00615 {
00616     return punktKamera_[1];
00617 }
00618 //------------------------------------------------------------------------------------------------------------------
00619 
00620 
00621 
00622 //------------------------------------------------------------------------------------------------------------------
00631 double GLWireframe::gibZKamera( )
00632 {
00633     return punktKamera_[2];
00634 }
00635 //------------------------------------------------------------------------------------------------------------------
00636 
00637 
00638 
00639 //------------------------------------------------------------------------------------------------------------------
00647 void GLWireframe::zeichne( )
00648 {
00649     updateGL();
00650 }
00651 //------------------------------------------------------------------------------------------------------------------
00652 
00653 
00654 
00655 //------------------------------------------------------------------------------------------------------------------
00662 void GLWireframe::clear()
00663 {
00664  maximaleKoordinaten_[0] = 0;
00665  maximaleKoordinaten_[1] = 0;
00666  maximaleKoordinaten_[2] = 0;
00667  minimaleKoordinaten_[0] = 5000;
00668  minimaleKoordinaten_[1] = 5000;
00669  minimaleKoordinaten_[2] = 5000;
00670  anzahlSpuren_ = 0;
00671  fahrzeugliste_ = 0;
00672  spurenliste_ = 0;
00673  kreuzungsliste_ = 0;
00674  maussteuerung_ = 2;
00675  list_ = 0;
00676 }
00677 //------------------------------------------------------------------------------------------------------------------
00678 
00679 //------------------------------------------------------------------------------------------------------------------
00686 void GLWireframe::setzeMaussteuerung( int maussteuerung )
00687 {
00688  if( maussteuerung == 1 || maussteuerung == 2 )
00689  {   
00690   maussteuerung_ = maussteuerung; 
00691  }
00692 }
00693 //------------------------------------------------------------------------------------------------------------------
00694 
00695 
00696 //------------------------------------------------------------------------------------------------------------------
00705 double GLWireframe::gibMaximaleAusdehnung( )
00706 {
00707   double ausdehnung(0);
00708   
00709   ausdehnung = maximaleKoordinaten_[0] - minimaleKoordinaten_[0];
00710   if( ausdehnung < maximaleKoordinaten_[1] - minimaleKoordinaten_[1]  )
00711     ausdehnung = maximaleKoordinaten_[1] - minimaleKoordinaten_[1];
00712   if( ausdehnung < maximaleKoordinaten_[2] - minimaleKoordinaten_[2]  )
00713     ausdehnung = maximaleKoordinaten_[2] - minimaleKoordinaten_[2];
00714 
00715   return ausdehnung;
00716 }
00717 //------------------------------------------------------------------------------------------------------------------
00718 
00719 
00720 
00721 //------------------------------------------------------------------------------------------------------------------
00730 void GLWireframe::ladeStandardwerte()
00731 {
00732  xRot_ = standardxRot_;
00733  yRot_ = standardyRot_;
00734  zRot_ = standardzRot_;
00735  
00736  punktKamera_[0] = standardpunktKamera_[0];
00737  punktKamera_[1] = standardpunktKamera_[1];
00738  punktKamera_[2] = standardpunktKamera_[2];
00739  
00740  punktReferenz_[0] = standardpunktReferenz_[0];
00741  punktReferenz_[1] = standardpunktReferenz_[1];
00742  punktReferenz_[2] = standardpunktReferenz_[2];
00743  
00744  vectorKameraOben_[0] = standardvectorKameraOben_[0];
00745  vectorKameraOben_[1] = standardvectorKameraOben_[1];
00746  vectorKameraOben_[2] = standardvectorKameraOben_[2];
00747  
00748  updateGL();
00749 }
00750 //------------------------------------------------------------------------------------------------------------------
00751 
00752 
00753 
00754 //------------------------------------------------------------------------------------------------------------------
00763 void GLWireframe::ladeWerkseinstellungen()
00764 {
00765     standardxRot_ = 0;
00766     standardyRot_ = 0;
00767     standardzRot_ = 0;
00768   
00769  erzeugeParameter();
00770  
00771     standardpunktKamera_[0] = 0;
00772     standardpunktKamera_[1] = 1000;
00773     standardpunktKamera_[2] = 200;
00774  
00775     standardpunktReferenz_[0] = 0;
00776     standardpunktReferenz_[1] = 1000;
00777     standardpunktReferenz_[2] = 0;
00778  
00779     standardvectorKameraOben_[0] = 0;
00780     standardvectorKameraOben_[1] = 1;
00781     standardvectorKameraOben_[2] = 0;
00782  
00783     ladeStandardwerte();
00784 }
00785 //------------------------------------------------------------------------------------------------------------------
00786 
00787 
00788 
00789 //------------------------------------------------------------------------------------------------------------------
00798 void GLWireframe::erzeugeZeichenliste()
00799 {
00800  Kreuzung *kreuzung;
00801  int i = 0;
00802 
00803  // Erzeuge eine neue Displayliste
00804  list_ = glGenLists( 1 );
00805  glNewList( list_, GL_COMPILE );
00806  
00807  // Fuege die Spuren in die Liste ein
00808  for( i = 0; i < anzahlSpuren_; i++ )
00809   zeichneSpur( spurenliste_[i] );
00810  
00811  // Fuege die Verbindungselemente an die Spuren an
00812  for( i = 0; i < anzahlSpuren_; i++ )
00813  {
00814   if( spurenliste_[i]->gibWahrscheinlichkeit( LINKS ) != 0 )
00815    zeichneSpurverbindung( spurenliste_[i], spurenliste_[i]->gibNaechsteSpur( LINKS ) );
00816   
00817   if( spurenliste_[i]->gibWahrscheinlichkeit( MITTE ) != 0 )
00818    zeichneSpurverbindung( spurenliste_[i], spurenliste_[i]->gibNaechsteSpur( MITTE ) );
00819   
00820   if( spurenliste_[i]->gibWahrscheinlichkeit( RECHTS ) != 0 )
00821    zeichneSpurverbindung( spurenliste_[i], spurenliste_[i]->gibNaechsteSpur( RECHTS ) );
00822  }
00823  
00824  // Zeichne alle Kreuzungen ein
00825  if( kreuzungsliste_ != 0 )
00826  {
00827   kreuzungsliste_->geheZuErsten();
00828   while( !kreuzungsliste_->istEnde() )
00829   {
00830    kreuzungsliste_->geheZuNaechsten();
00831    kreuzung = (Kreuzung *) kreuzungsliste_->gibDaten();
00832    zeichneKreuzung( kreuzung );
00833   }
00834  }
00835  
00836  // Die Liste beenden
00837  glEndList();
00838 }
00839 //------------------------------------------------------------------------------------------------------------------
00840 
00841 
00842 
00843 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
00853 void GLWireframe::zeichneSpur(Spur *spur)
00854 {
00855  double laenge,breite = 20.0;
00856  int    ausrichtung, richtung, pfeil;
00857  Koordinaten *grau = new Koordinaten();
00858      grau->x = grau->y = grau->z = 76.0;
00859  Koordinaten *weiss = new Koordinaten();
00860      weiss->x = weiss->y = weiss->z = 204.0;
00861  
00862  laenge      = spur->gibLaenge()*10;
00863  ausrichtung = spur->gibAusrichtung();
00864  richtung    = spur->gibRichtung();
00865  pfeil       = spur->gibAbbiegerichtung();
00866 
00867  
00868  Koordinaten *ursprung = new Koordinaten();
00869  *ursprung = spur->gibKoordinaten();
00870  
00871  // Spur an den richtigen Platz verschieben
00872  glTranslated( ursprung->x, ursprung->y, ursprung->z);
00873   
00874  if( ausrichtung == HOR )
00875  {
00876   // Seitenstreifen
00877   glBegin(GL_QUADS);
00878    setMaterialColor3d( *weiss );
00879 
00880    glVertex3d(    0.0,    0.0, 0.0 ); 
00881    glVertex3d( laenge*richtung,          0.0, 0.0 );
00882    glVertex3d( laenge*richtung, 2.0*richtung, 0.0 );
00883    glVertex3d(             0.0, 2.0*richtung, 0.0 );
00884   glEnd();
00885   
00886   // Fahrbahn
00887   glBegin(GL_QUADS);
00888    setMaterialColor3d( *grau );
00889   
00890    glVertex3d(    0.0,          2.0*richtung, 0.0 );
00891    glVertex3d( laenge*richtung,          2.0*richtung, 0.0 );
00892    glVertex3d( laenge*richtung, (breite-2.0)*richtung, 0.0 );
00893    glVertex3d(             0.0, (breite-2.0)*richtung, 0.0 );
00894   glEnd();
00895   
00896   // Seitenstreifen
00897   glBegin(GL_QUADS);
00898    setMaterialColor3d( *weiss );
00899   
00900    glVertex3d(             0.0, (breite-2.0)*richtung, 0.0 ); 
00901    glVertex3d( laenge*richtung, (breite-2.0)*richtung, 0.0 );
00902    glVertex3d( laenge*richtung,       breite*richtung, 0.0 );
00903    glVertex3d(             0.0,       breite*richtung, 0.0 );
00904   glEnd();
00905   
00906   // Abbiegepfeil
00907   switch( pfeil )
00908   {
00909    case MITTE:
00910    {
00911     glBegin(GL_QUADS);
00912      setMaterialColor3d( *weiss );
00913   
00914      glVertex3d( (laenge-19)*richtung,            (6.0)*richtung, 0.5 ); 
00915      glVertex3d(  (laenge-8)*richtung, ((breite/2)-0.5)*richtung, 0.5 ); 
00916      glVertex3d(  (laenge-8)*richtung, ((breite/2)+0.5)*richtung, 0.5 ); 
00917      glVertex3d( (laenge-19)*richtung,     (breite-6.0)*richtung, 0.5 ); 
00918     glEnd();
00919    } break;
00920    case LINKS:
00921    {
00922     glBegin(GL_QUADS);
00923     setMaterialColor3d( *weiss );
00924     
00925      glVertex3d( (laenge-15)*richtung,          4.0*richtung, 0.5 ); 
00926      glVertex3d(  (laenge-8)*richtung, (breite-6.0)*richtung, 0.5 ); 
00927      glVertex3d(  (laenge-8)*richtung, (breite-5.0)*richtung, 0.5 ); 
00928      glVertex3d( (laenge-21)*richtung, (breite-9.0)*richtung, 0.5 ); 
00929     glEnd();
00930    } break;
00931    case RECHTS:
00932    {
00933     glBegin(GL_QUADS);
00934     setMaterialColor3d( *weiss );
00935     
00936      glVertex3d( (laenge-21)*richtung, (breite-11.0)*richtung, 0.5 ); 
00937      glVertex3d(  (laenge-8)*richtung,           5.0*richtung, 0.5 ); 
00938      glVertex3d(  (laenge-8)*richtung,           6.0*richtung, 0.5 ); 
00939      glVertex3d( (laenge-15)*richtung, (breite- 4.0)*richtung, 0.5 ); 
00940     glEnd();
00941    } break;
00942    default: break;
00943   }
00944  }
00945  else
00946  { // Seitenstreifen
00947   glBegin(GL_QUADS);
00948    setMaterialColor3d( *weiss );
00949   
00950    glVertex3d(    0.0,        0.0, 0.0 ); 
00951    glVertex3d( 2.0*richtung,             0.0, 0.0 );
00952    glVertex3d( 2.0*richtung, laenge*richtung, 0.0 );
00953    glVertex3d(          0.0, laenge*richtung, 0.0 );
00954   glEnd();
00955   
00956   // Fahrbahn
00957   glBegin(GL_QUADS);
00958    setMaterialColor3d( *grau );
00959   
00960    glVertex3d(    2.0*richtung,             0.0, 0.0 );
00961    glVertex3d( (breite-2.0)*richtung,             0.0, 0.0 );
00962    glVertex3d( (breite-2.0)*richtung, laenge*richtung, 0.0 );
00963    glVertex3d(          2.0*richtung, laenge*richtung, 0.0 );
00964   glEnd();
00965   
00966   // Seitenstreifen
00967   glBegin(GL_QUADS);
00968    setMaterialColor3d( *weiss );
00969   
00970    glVertex3d( (breite-2.0)*richtung,             0.0, 0.0 );
00971    glVertex3d(       breite*richtung,             0.0, 0.0 );
00972    glVertex3d(       breite*richtung, laenge*richtung, 0.0 );
00973    glVertex3d( (breite-2.0)*richtung, laenge*richtung, 0.0 );
00974   glEnd();
00975   
00976   // Abbiegepfeil
00977   switch( pfeil )
00978   {
00979    case MITTE:
00980    {
00981     glBegin(GL_QUADS);
00982      setMaterialColor3d( *weiss );
00983     
00984      glVertex3d(            (6.0)*richtung, (laenge-19)*richtung, 0.5 ); 
00985      glVertex3d(     (breite-6.0)*richtung, (laenge-19)*richtung, 0.5 ); 
00986      glVertex3d( ((breite/2)+0.5)*richtung,  (laenge-8)*richtung, 0.5 ); 
00987      glVertex3d( ((breite/2)-0.5)*richtung,  (laenge-8)*richtung, 0.5 ); 
00988     glEnd();
00989    } break;
00990    case RECHTS:
00991    {
00992     glBegin(GL_QUADS);
00993      setMaterialColor3d( *weiss );
00994     
00995      glVertex3d(          4.0*richtung, (laenge-15.0)*richtung, 0.5 );  
00996      glVertex3d( (breite-9.0)*richtung, (laenge-21.0)*richtung, 0.5 ); 
00997      glVertex3d( (breite-4.0)*richtung, (laenge-10.0)*richtung, 0.5 ); 
00998      glVertex3d( (breite-4.0)*richtung, (laenge- 9.0)*richtung, 0.5 ); 
00999     glEnd();
01000    } break;
01001    case LINKS:
01002    {
01003     glBegin(GL_QUADS);
01004      setMaterialColor3d( *weiss );
01005     
01006      glVertex3d(           4.0*richtung, (laenge- 9.0)*richtung, 0.5 ); 
01007      glVertex3d(           4.0*richtung, (laenge-10.0)*richtung, 0.5 ); 
01008      glVertex3d( (breite-11.0)*richtung, (laenge-21.0)*richtung, 0.5 ); 
01009      glVertex3d( (breite- 4.0)*richtung, (laenge-15.0)*richtung, 0.5 ); 
01010     glEnd();
01011    } break;
01012   }
01013  }
01014   
01015   // Koordinatensystem zurueckschieben
01016   glTranslated( -1*ursprung->x, -1*ursprung->y, -1*ursprung->z);
01017 }
01018 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01019 
01020 
01021 
01022 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01031 void GLWireframe::zeichneHaltelinie(Spur *spur)
01032 {
01033  double laenge,breite = 20.0;
01034  int    richtung, zustand, ausrichtung;
01035  Koordinaten *zustandsFarbe = new Koordinaten();
01036  
01037  
01038  laenge      = spur->gibLaenge()*10;
01039  richtung    = spur->gibRichtung();
01040  ausrichtung = spur->gibAusrichtung();
01041  zustand     = spur->gibEndzustand();
01042  
01043  
01044  // Farbe nach Zustand festlegen
01045  switch( zustand )
01046  {
01047   case ROT:  { zustandsFarbe->x = 222; zustandsFarbe->y = 33; zustandsFarbe->z = 56; } break;
01048   case GELB: { zustandsFarbe->x = 247; zustandsFarbe->y = 217; zustandsFarbe->z = 54; } break;
01049   default:   { zustandsFarbe->x = 0;  zustandsFarbe->y = 252; zustandsFarbe->z = 69; } break;
01050  }
01051  
01052  Koordinaten *ursprung = new Koordinaten();
01053  *ursprung = spur->gibKoordinaten();
01054  
01055  // Spur an den richtigen Platz verschieben
01056  glTranslated( ursprung->x, ursprung->y, ursprung->z);
01057  
01058  if( ausrichtung == HOR )
01059  {  
01060   if( zustand )
01061   {   // Endzustandstreifen
01062    glBegin(GL_QUADS);
01063    setMaterialColor3d( *zustandsFarbe );
01064    
01065    glVertex3d( (laenge-4)*richtung,       2.0*richtung, 0.5 );  
01066    glVertex3d(     laenge*richtung,    2.0*richtung, 0.5 ); 
01067    glVertex3d(     laenge*richtung, (breite-2.0)*richtung, 0.5 ); 
01068    glVertex3d( (laenge-4)*richtung, (breite-2.0)*richtung, 0.5 ); 
01069    glEnd();
01070   }
01071  }
01072  else
01073  { 
01074   if( zustand )
01075   {   // Endzustandstreifen
01076    glBegin(GL_QUADS);
01077    setMaterialColor3d( *zustandsFarbe );
01078    
01079    glVertex3d(    2.0*richtung, (laenge-4)*richtung, 0.5 );  
01080    glVertex3d( (breite-2.0)*richtung, (laenge-4)*richtung, 0.5 ); 
01081    glVertex3d( (breite-2.0)*richtung,     laenge*richtung, 0.5 ); 
01082    glVertex3d(    2.0*richtung,     laenge*richtung, 0.5 ); 
01083    glEnd();
01084   }
01085  }
01086  
01087  // Koordinatensystem zurueckschieben
01088  glTranslated( -1*ursprung->x, -1*ursprung->y, -1*ursprung->z);
01089 }
01090 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01091 
01092 
01093 
01094 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01103 void GLWireframe::zeichneKreuzung(Kreuzung *kreuzung)
01104 {
01105  Koordinaten *nordR = new Koordinaten();
01106      nordR->x = nordR->y = nordR->z = -1;
01107  Koordinaten *nordL = new Koordinaten();
01108      nordL->x = nordL->y = nordL->z = -1;
01109  Koordinaten *westO = new Koordinaten();
01110      westO->x = westO->y = westO->z = -1;
01111  Koordinaten *westU = new Koordinaten();
01112      westU->x = westU->y = westU->z = -1;
01113  Koordinaten *suedL = new Koordinaten();
01114      suedL->x = suedL->y = suedL->z = -1;
01115  Koordinaten *suedR = new Koordinaten();
01116      suedR->x = suedR->y = suedR->z = -1;
01117  Koordinaten *ostU = new Koordinaten();
01118      ostU->x = ostU->y = ostU->z = -1;
01119  Koordinaten *ostO = new Koordinaten();
01120      ostO->x = ostO->y = ostO->z = -1;
01121  
01122  Koordinaten *farbe  = new Koordinaten();
01123      farbe->x = farbe->y = farbe->z = 76;
01124  bool nordFlag = FALSE,westFlag = FALSE,suedFlag = FALSE,ostFlag = FALSE;
01125  int i;
01126  
01127  
01128  // Westen
01129  for( i = LINKS; i <= RECHTS; i++ )
01130  {
01131   if( kreuzung->gibSpur( WEST, i ) )
01132   {   // wenn Spur im Westen existiert, dann mitzeichnen
01133    westFlag = TRUE;
01134   
01135    if( westO->y == -1 )
01136    {
01137     *westO = kreuzung->gibSpur( WEST, i )->gibKoordinaten();
01138     westO->x += kreuzung->gibSpur( WEST, i )->gibLaenge()*10;
01139     westO->y += 20;
01140    }
01141   
01142    *westU = kreuzung->gibSpur( WEST, i )->gibKoordinaten();
01143    westU->x += kreuzung->gibSpur( WEST, i )->gibLaenge()*10;
01144   }
01145  }
01146  
01147  // Sueden
01148  for( i = LINKS; i <= RECHTS; i++ )
01149  {
01150   if( kreuzung->gibSpur( SUED, i ) )
01151   {   // wenn Spur im Sueden existiert, dann mitzeichnen
01152    suedFlag = TRUE;
01153    
01154    if( suedL->y == -1 )
01155    {
01156     *suedL = kreuzung->gibSpur( SUED, i )->gibKoordinaten();
01157     suedL->y += kreuzung->gibSpur( SUED, i )->gibLaenge()*10;
01158    }
01159    
01160    *suedR = kreuzung->gibSpur( SUED, i )->gibKoordinaten();
01161    suedR->y += kreuzung->gibSpur( SUED, i )->gibLaenge()*10;
01162    suedR->x += 20;
01163   }
01164  }
01165  
01166  // Osten
01167  for( i = LINKS; i <= RECHTS; i++ )
01168  {
01169   if( kreuzung->gibSpur( OST, i ) )
01170   {   // wenn Spur im Osten existiert, dann mitzeichnen
01171    ostFlag = TRUE;
01172    
01173    if( ostU->y == -1 )
01174    {
01175     *ostU = kreuzung->gibSpur( OST, i )->gibKoordinaten();
01176     ostU->x -= kreuzung->gibSpur( OST, i )->gibLaenge()*10;
01177     ostU->y -= 20;
01178    }
01179    
01180    *ostO = kreuzung->gibSpur( OST, i )->gibKoordinaten();
01181    ostO->x -= kreuzung->gibSpur( OST, i )->gibLaenge()*10;
01182   }
01183  }
01184  
01185  // Norden
01186  for( i = LINKS; i <= RECHTS; i++ )
01187  {
01188   if( kreuzung->gibSpur( NORD, i ) )
01189   {   // wenn Spur im Norden existiert, dann mitzeichnen
01190    nordFlag = TRUE;
01191    
01192    if( nordR->y == -1 )
01193    {
01194     *nordR = kreuzung->gibSpur( NORD, i )->gibKoordinaten();
01195     nordR->y -= kreuzung->gibSpur( NORD, i )->gibLaenge()*10;
01196    }
01197    
01198    *nordL = kreuzung->gibSpur( NORD, i )->gibKoordinaten();
01199    nordL->y -= kreuzung->gibSpur( NORD, i )->gibLaenge()*10;
01200    nordL->x -= 20;
01201   }
01202  }
01203  
01204  // Zwischenraum zeichen
01205  glBegin(GL_POLYGON);
01206   setMaterialColor3d( *farbe );
01207    
01208   if( westFlag )
01209   {
01210    glVertex3d( westO->x, westO->y, westO->z );
01211    glVertex3d( westU->x, westU->y, westU->z );
01212   }
01213   if( suedFlag )
01214   {
01215    glVertex3d( suedL->x, suedL->y, suedL->z );
01216    glVertex3d( suedR->x, suedR->y, suedR->z );
01217   }
01218   if( ostFlag )
01219   {
01220    glVertex3d( ostU->x, ostU->y, ostU->z );
01221    glVertex3d( ostO->x, ostO->y, ostO->z );
01222   }
01223   if( nordFlag )
01224   {
01225    glVertex3d( nordR->x, nordR->y, nordR->z );
01226    glVertex3d( nordL->x, nordL->y, nordL->z );
01227   }
01228  glEnd();
01229 }
01230 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01231 
01232 
01233 
01234 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01244 void GLWireframe::zeichneSpurverbindung(Spur *vorgaenger, Spur *nachfolger)
01245 {
01246  double breite = 20.0;
01247  double vLaenge = vorgaenger->gibLaenge()*10;
01248  int vAusrichtung = vorgaenger->gibAusrichtung();
01249  int nAusrichtung = nachfolger->gibAusrichtung();
01250  int vRichtung = vorgaenger->gibRichtung();
01251  int nRichtung = nachfolger->gibRichtung();
01252  Koordinaten *vCoord = new Koordinaten();
01253     *vCoord = vorgaenger->gibKoordinaten();
01254  Koordinaten *nCoord = new Koordinaten();
01255     *nCoord = nachfolger->gibKoordinaten();
01256  Koordinaten *farbe  = new Koordinaten();
01257      farbe->x = farbe->y = farbe->z = 76;
01258  
01259    
01260  if( vAusrichtung == HOR )
01261  {
01262   if( nAusrichtung == HOR  )
01263   {
01264    glBegin(GL_QUADS);
01265     setMaterialColor3d( *farbe );
01266    
01267     glVertex3d( (vCoord->x+(vLaenge*vRichtung)), (vCoord->y),      (vCoord->z) );
01268     glVertex3d( (nCoord->x),      (nCoord->y),      (nCoord->z) );
01269     glVertex3d( (nCoord->x),         (nCoord->y+(breite*nRichtung)), (nCoord->z) );
01270     glVertex3d( (vCoord->x+(vLaenge*vRichtung)), (vCoord->y+(breite*vRichtung)), (vCoord->z) );
01271    glEnd();
01272   }
01273   else
01274   {
01275    glBegin(GL_QUADS);
01276     setMaterialColor3d( *farbe );
01277    
01278     glVertex3d( (vCoord->x+(vLaenge*vRichtung)),  (vCoord->y),                    (vCoord->z) );
01279     glVertex3d( (nCoord->x+(breite*nRichtung)),   (nCoord->y),                    (nCoord->z) );
01280     glVertex3d( (nCoord->x),                      (nCoord->y),                    (nCoord->z) );
01281     glVertex3d( (vCoord->x+(vLaenge*vRichtung)),  (vCoord->y+(breite*vRichtung)), (vCoord->z) );
01282    glEnd();
01283   }
01284  }
01285  else
01286  {
01287   if( nAusrichtung == HOR  )
01288   {
01289    glBegin(GL_QUADS);
01290     setMaterialColor3d( *farbe );
01291    
01292     glVertex3d( (vCoord->x),                    (vCoord->y+(vLaenge*vRichtung)), (vCoord->z) );
01293     glVertex3d( (vCoord->x+(breite*vRichtung)), (vCoord->y+(vLaenge*vRichtung)), (vCoord->z) );
01294     glVertex3d( (nCoord->x),                    (nCoord->y),                     (nCoord->z) );
01295     glVertex3d( (nCoord->x),                    (nCoord->y+(breite*nRichtung)),  (nCoord->z) );
01296    glEnd();
01297   }
01298   else
01299   {
01300    glBegin(GL_QUADS);
01301     setMaterialColor3d( *farbe );
01302    
01303     glVertex3d( (vCoord->x),                    (vCoord->y+(vLaenge*vRichtung)), (vCoord->z) );
01304     glVertex3d( (nCoord->x),                    (nCoord->y),                     (nCoord->z) );
01305     glVertex3d( (nCoord->x+(breite*nRichtung)), (nCoord->y),         (nCoord->z) );
01306     glVertex3d( (vCoord->x+(breite*vRichtung)), (vCoord->y+(vLaenge*vRichtung)), (vCoord->z) );
01307    glEnd();
01308   }
01309  }
01310 }
01311 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01312 
01313 
01314 
01315 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
01324 void GLWireframe::zeichneFahrzeug(Fahrzeug *fahrzeug)
01325 {
01326  double laenge,breite,hoehe;
01327  int    ausrichtung, richtung, bremsen, typ, weg;
01328  Koordinaten *rot = new Koordinaten();
01329      rot->x = 255.0;
01330      rot->y = rot->z = 10.0;
01331  Koordinaten *schwarz = new Koordinaten();
01332      schwarz->x = schwarz->y = schwarz->z = 10.0;
01333  
01334  laenge      = fahrzeug->gibLaenge()*10;
01335  bremsen     = fahrzeug->istBremsend();
01336  typ   = fahrzeug->gibTyp();
01337  ausrichtung = fahrzeug->gibSpur()->gibAusrichtung();
01338  richtung    = fahrzeug->gibSpur()->gibRichtung();
01339  weg   = fahrzeug->gibPosition()*10;
01340   
01341  Koordinaten *ursprung = &fahrzeug->gibSpur()->gibKoordinaten();
01342  Koordinaten *fahrzeugPosition = new Koordinaten();
01343   
01344  // Fahrzeug an den richtigen Platz schieben verschieben
01345  if( ausrichtung == HOR )
01346  {
01347   fahrzeugPosition->x = ursprung->x + ( richtung * weg );
01348   if( typ == BIKE )
01349    fahrzeugPosition->y = ursprung->y + ( richtung * 7.0 );
01350   else if( typ == PKW )
01351    fahrzeugPosition->y = ursprung->y + ( richtung * 4.0 );
01352   else
01353    fahrzeugPosition->y = ursprung->y + ( richtung * 2.0 );
01354   fahrzeugPosition->z = ursprung->z;
01355  }
01356  else
01357  {
01358   if( typ == BIKE )
01359    fahrzeugPosition->x = ursprung->x + ( richtung * 7.0 );
01360   else if( typ == PKW )
01361    fahrzeugPosition->x = ursprung->x + ( richtung * 4.0 );
01362   else
01363    fahrzeugPosition->x = ursprung->x + ( richtung * 2.0 );
01364   fahrzeugPosition->y = ursprung->y + ( richtung * weg );
01365   fahrzeugPosition->z = ursprung->z;
01366  }
01367  
01368  glTranslated( fahrzeugPosition->x, fahrzeugPosition->y, fahrzeugPosition->z);
01369 
01370  switch( typ )
01371  {   //----------------------------------------------------------------
01372   case PKW:
01373   {   hoehe = 10.0;
01374    breite = 13.0;
01375    
01376    if( ausrichtung == HOR )
01377    {
01378     // Bodenplatte
01379     glBegin(GL_QUADS);
01380      setMaterialColor3d( fahrzeug->gibFarbe() );
01381     
01382      glVertex3d(             0.0, breite*richtung, 0.0 );
01383      glVertex3d( laenge*richtung, breite*richtung, 0.0 );
01384      glVertex3d( laenge*richtung,             0.0, 0.0 );
01385      glVertex3d(       0.0,             0.0, 0.0 );
01386     glEnd();
01387     
01388     // Kuehlergrill
01389     glBegin(GL_QUADS);
01390      setMaterialColor3d( fahrzeug->gibFarbe() );
01391     
01392      glVertex3d(     laenge*richtung,             0.0, 0.0 );
01393      glVertex3d(     laenge*richtung, breite*richtung, 0.0 );
01394      glVertex3d( (laenge-1)*richtung, breite*richtung, 5.0 );
01395      glVertex3d( (laenge-1)*richtung,             0.0, 5.0 );
01396     glEnd();
01397     
01398     // Motorhaube
01399     glBegin(GL_QUADS);
01400      setMaterialColor3d( fahrzeug->gibFarbe() );
01401     
01402      glVertex3d( (laenge-1)*richtung,             0.0, 5.0 );
01403      glVertex3d( (laenge-1)*richtung, breite*richtung, 5.0 );
01404      glVertex3d( (laenge-8)*richtung, breite*richtung, 6.0 );
01405      glVertex3d( (laenge-8)*richtung,             0.0, 6.0 );
01406     glEnd();
01407     
01408     // Frontscheibe
01409     glBegin(GL_QUADS);
01410      setMaterialColor3d( fahrzeug->gibFarbe() );
01411     
01412      glVertex3d( (laenge-8 )*richtung,             0.0, 6.0 );
01413      glVertex3d( (laenge-8 )*richtung, breite*richtung, 6.0 );
01414      glVertex3d( (laenge-11)*richtung, breite*richtung, hoehe );
01415      glVertex3d( (laenge-11)*richtung,             0.0, hoehe );
01416     glEnd();
01417     
01418     
01419     // Dach
01420     glBegin(GL_QUADS);
01421      setMaterialColor3d( fahrzeug->gibFarbe() );
01422     
01423      glVertex3d( (laenge-11)*richtung,             0.0, hoehe );
01424      glVertex3d( (laenge-11)*richtung, breite*richtung, hoehe );
01425      glVertex3d(         9.0*richtung, breite*richtung, hoehe );
01426      glVertex3d(   9.0*richtung,             0.0, hoehe );
01427     glEnd();
01428     
01429     // Heckscheibe
01430     glBegin(GL_QUADS);
01431      setMaterialColor3d( fahrzeug->gibFarbe() );
01432     
01433      glVertex3d( 9.0*richtung,             0.0, hoehe );
01434      glVertex3d( 9.0*richtung, breite*richtung, hoehe );
01435      glVertex3d( 7.0*richtung, breite*richtung, hoehe-4 );
01436      glVertex3d( 7.0*richtung,             0.0, hoehe-4 );
01437     glEnd();
01438     
01439     // Kofferraum
01440     glBegin(GL_QUADS);
01441      setMaterialColor3d( fahrzeug->gibFarbe() );
01442     
01443      glVertex3d( 7.0*richtung,             0.0, hoehe-4 );
01444      glVertex3d( 7.0*richtung, breite*richtung, hoehe-4 );
01445      glVertex3d( 2.0*richtung, breite*richtung, 5.0 );
01446      glVertex3d( 2.0*richtung,             0.0, 5.0 );
01447     glEnd();
01448     
01449     // Heck oben
01450     glBegin(GL_QUADS);
01451      if( bremsen )
01452       setMaterialColor3d( *rot );
01453      else
01454       setMaterialColor3d( fahrzeug->gibFarbe() );
01455     
01456      glVertex3d( 2.0*richtung,             0.0, 5.0 );
01457      glVertex3d( 2.0*richtung, breite*richtung, 5.0 );
01458      glVertex3d( 0.0,          breite*richtung, 0.0 );
01459      glVertex3d( 0.0,                      0.0, 0.0 );
01460     glEnd();
01461     
01462     // Seitenwand eins
01463     glBegin(GL_POLYGON);
01464      setMaterialColor3d( fahrzeug->gibFarbe() );
01465     
01466      glVertex3d(                  0.0, 0.0, 0.0 );
01467      glVertex3d(      laenge*richtung, 0.0, 0.0 );
01468      glVertex3d( (laenge-1 )*richtung, 0.0, 5.0 );
01469      glVertex3d( (laenge-8 )*richtung, 0.0, 6.0 );
01470      glVertex3d( (laenge-11)*richtung, 0.0, hoehe );
01471      glVertex3d(         9.0*richtung, 0.0, hoehe );
01472      glVertex3d(   7.0*richtung, 0.0, hoehe-4 );
01473      glVertex3d(   2.0*richtung, 0.0, 5.0 );
01474     glEnd();
01475     
01476     // Seitenwand zwei
01477     glBegin(GL_POLYGON);
01478      setMaterialColor3d( fahrzeug->gibFarbe() );
01479     
01480      glVertex3d(                  0.0, breite*richtung, 0.0 );
01481      glVertex3d(   2.0*richtung, breite*richtung, 5.0 );
01482      glVertex3d(   7.0*richtung, breite*richtung, hoehe-4 );
01483      glVertex3d(   9.0*richtung, breite*richtung, hoehe );
01484      glVertex3d( (laenge-11)*richtung, breite*richtung, hoehe );
01485      glVertex3d( (laenge-8 )*richtung, breite*richtung, 6.0 );
01486      glVertex3d( (laenge-1 )*richtung, breite*richtung, 5.0 );
01487      glVertex3d(      laenge*richtung, breite*richtung, 0.0 );
01488     glEnd();
01489    }
01490    else
01491 
01492    {
01493     // Bodenplatte
01494     glBegin(GL_QUADS);
01495      setMaterialColor3d( fahrzeug->gibFarbe() );
01496     
01497      glVertex3d( breite*richtung,             0.0, 0.0 );
01498      glVertex3d(             0.0,             0.0, 0.0 );
01499      glVertex3d(             0.0, laenge*richtung, 0.0 );
01500      glVertex3d( breite*richtung, laenge*richtung, 0.0 );
01501     glEnd();
01502     
01503     // Kuehlergrill
01504     glBegin(GL_QUADS);
01505      setMaterialColor3d( fahrzeug->gibFarbe() );
01506     
01507      glVertex3d(             0.0,     laenge*richtung, 0.0 );
01508      glVertex3d(             0.0, (laenge-1)*richtung, 5.0 );
01509      glVertex3d( breite*richtung, (laenge-1)*richtung, 5.0 );
01510      glVertex3d( breite*richtung,     laenge*richtung, 0.0 );
01511     glEnd();
01512     
01513     // Motorhaube
01514     glBegin(GL_QUADS);
01515      setMaterialColor3d( fahrzeug->gibFarbe() );
01516     
01517      glVertex3d(             0.0, (laenge-1)*richtung, 5.0 );
01518      glVertex3d(             0.0, (laenge-8)*richtung, 6.0 );
01519      glVertex3d( breite*richtung, (laenge-8)*richtung, 6.0 );
01520      glVertex3d( breite*richtung, (laenge-1)*richtung, 5.0 );
01521     glEnd();
01522     
01523     // Frontscheibe
01524     glBegin(GL_QUADS);
01525      setMaterialColor3d( fahrzeug->gibFarbe() );
01526     
01527      glVertex3d(             0.0, (laenge-8 )*richtung, 6.0 );
01528      glVertex3d(             0.0, (laenge-11)*richtung, hoehe );
01529      glVertex3d( breite*richtung, (laenge-11)*richtung, hoehe );
01530      glVertex3d( breite*richtung, (laenge-8 )*richtung, 6.0 );
01531     glEnd();
01532     
01533     
01534     // Dach
01535     glBegin(GL_QUADS);
01536      setMaterialColor3d( fahrzeug->gibFarbe() );
01537     
01538      glVertex3d(             0.0, (laenge-11)*richtung, hoehe );
01539      glVertex3d(             0.0,         9.0*richtung, hoehe );
01540      glVertex3d( breite*richtung,   9.0*richtung, hoehe );
01541      glVertex3d( breite*richtung, (laenge-11)*richtung, hoehe );
01542     glEnd();
01543     
01544     // Heckscheibe
01545     glBegin(GL_QUADS);
01546      setMaterialColor3d( fahrzeug->gibFarbe() );
01547     
01548      glVertex3d(             0.0, 9.0*richtung, hoehe );
01549      glVertex3d(             0.0, 7.0*richtung, hoehe-4 );
01550      glVertex3d( breite*richtung, 7.0*richtung, hoehe-4 );
01551      glVertex3d( breite*richtung, 9.0*richtung, hoehe );
01552     glEnd();
01553     
01554     // Kofferraum
01555     glBegin(GL_QUADS);
01556      setMaterialColor3d( fahrzeug->gibFarbe() );
01557     
01558      glVertex3d(             0.0, 7.0*richtung, hoehe-4 );
01559      glVertex3d(             0.0, 2.0*richtung, 5.0 );
01560      glVertex3d( breite*richtung, 2.0*richtung, 5.0 );
01561      glVertex3d( breite*richtung, 7.0*richtung, hoehe-4 );
01562     glEnd();
01563     
01564     // Heck oben
01565     glBegin(GL_QUADS);
01566      if( bremsen )
01567       setMaterialColor3d( *rot );
01568      else
01569       setMaterialColor3d( fahrzeug->gibFarbe() );
01570     
01571      glVertex3d(             0.0, 2.0*richtung, 5.0 );
01572      glVertex3d(             0.0,          0.0, 0.0 );
01573      glVertex3d( breite*richtung,          0.0, 0.0 );
01574      glVertex3d( breite*richtung, 2.0*richtung, 5.0 );
01575     glEnd();
01576     
01577     // Seitenwand eins
01578     glBegin(GL_POLYGON);
01579      setMaterialColor3d( fahrzeug->gibFarbe() );
01580     
01581      glVertex3d( 0.0,                  0.0, 0.0 );
01582      glVertex3d( 0.0,   2.0*richtung, 5.0 );
01583      glVertex3d( 0.0,   7.0*richtung, hoehe-4 );
01584      glVertex3d( 0.0,   9.0*richtung, hoehe );
01585      glVertex3d( 0.0, (laenge-11)*richtung, hoehe );
01586      glVertex3d( 0.0, (laenge-8 )*richtung, 6.0 );
01587      glVertex3d( 0.0, (laenge-1 )*richtung, 5.0 );
01588      glVertex3d( 0.0,      laenge*richtung, 0.0 );
01589     glEnd();
01590     
01591     // Seitenwand zwei
01592     glBegin(GL_POLYGON);
01593      setMaterialColor3d( fahrzeug->gibFarbe() );
01594     
01595      glVertex3d( breite*richtung,                  0.0, 0.0 );
01596      glVertex3d( breite*richtung,      laenge*richtung, 0.0 );
01597      glVertex3d( breite*richtung, (laenge-1 )*richtung, 5.0 );
01598      glVertex3d( breite*richtung, (laenge-8 )*richtung, 6.0 );
01599      glVertex3d( breite*richtung, (laenge-11)*richtung, hoehe );
01600      glVertex3d( breite*richtung,   9.0*richtung, hoehe );
01601      glVertex3d( breite*richtung,   7.0*richtung, hoehe-4 );
01602      glVertex3d( breite*richtung,   2.0*richtung, 5.0 );
01603     glEnd();
01604    }
01605    
01606   } break;
01607   
01608   //----------------------------------------------------------------
01609   case LKW:
01610   {   hoehe = 20.0;
01611    breite = 15.0;
01612    
01613    if( ausrichtung == VER )
01614    {
01615     // Bodenplatte
01616 
01617     glBegin(GL_QUADS);
01618      setMaterialColor3d( fahrzeug->gibFarbe() );
01619    
01620      glVertex3d(  breite*richtung,             0.0, 0.0 );
01621      glVertex3d(              0.0,             0.0, 0.0 );
01622      glVertex3d(              0.0, laenge*richtung, 0.0 );
01623      glVertex3d(  breite*richtung, laenge*richtung, 0.0 );
01624     glEnd();
01625    
01626     // Front unten
01627     glBegin(GL_QUADS);
01628      setMaterialColor3d( fahrzeug->gibFarbe() );
01629    
01630      glVertex3d(             0.0, laenge*richtung, 0.0 );
01631      glVertex3d(             0.0, laenge*richtung, hoehe-10 );
01632      glVertex3d( breite*richtung, laenge*richtung, hoehe-10 );
01633      glVertex3d( breite*richtung, laenge*richtung, 0.0 );
01634     glEnd();
01635    
01636     // Front oben
01637     glBegin(GL_QUADS);
01638      setMaterialColor3d( fahrzeug->gibFarbe() );
01639    
01640      glVertex3d(             0.0, (laenge-2)*richtung, hoehe-5 );
01641      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe-5 );
01642      glVertex3d( breite*richtung,     laenge*richtung, hoehe-10 );
01643      glVertex3d(             0.0,     laenge*richtung, hoehe-10 );
01644     glEnd();
01645    
01646     // Front Dach
01647     glBegin(GL_QUADS);
01648      setMaterialColor3d( fahrzeug->gibFarbe() );
01649    
01650      glVertex3d(             0.0, (laenge-2)*richtung, hoehe-5 );
01651      glVertex3d(             0.0, (laenge-7)*richtung, hoehe-5 );
01652      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe-5 );
01653      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe-5 );
01654     glEnd();
01655    
01656     // Dach Front
01657     glBegin(GL_QUADS);
01658      setMaterialColor3d( fahrzeug->gibFarbe() );
01659    
01660      glVertex3d(             0.0, (laenge-7)*richtung, hoehe-5 );
01661      glVertex3d(             0.0, (laenge-7)*richtung, hoehe );
01662      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe );
01663      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe-5 );
01664     glEnd();
01665    
01666     // Dach
01667     glBegin(GL_QUADS);
01668      setMaterialColor3d( fahrzeug->gibFarbe() );
01669    
01670      glVertex3d(             0.0, (laenge-7)*richtung, hoehe );
01671      glVertex3d(             0.0, 2.0*richtung,        hoehe );
01672      glVertex3d( breite*richtung, 2.0*richtung,        hoehe );
01673      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe );
01674     glEnd();
01675    
01676     // Heck oben (als Bremslicht)
01677     glBegin(GL_QUADS);
01678      if( bremsen )
01679       setMaterialColor3d( *rot);
01680      else
01681       setMaterialColor3d( fahrzeug->gibFarbe() );
01682    
01683      glVertex3d(             0.0, 2.0*richtung, hoehe );
01684      glVertex3d(             0.0,          0.0, hoehe-5 );
01685      glVertex3d( breite*richtung,          0.0, hoehe-5 );
01686      glVertex3d( breite*richtung, 2.0*richtung, hoehe );
01687     glEnd();
01688    
01689     // Heck unten
01690     glBegin(GL_QUADS);
01691      setMaterialColor3d( fahrzeug->gibFarbe() );
01692    
01693      glVertex3d(             0.0, 0.0, hoehe-5 );
01694      glVertex3d(             0.0, 0.0, 0.0 );
01695      glVertex3d( breite*richtung, 0.0, 0.0 );
01696      glVertex3d( breite*richtung, 0.0, hoehe-5 );
01697     glEnd();
01698    
01699     // Seitenwand eins
01700     glBegin(GL_POLYGON);
01701      setMaterialColor3d( fahrzeug->gibFarbe() );
01702    
01703      glVertex3d( breite*richtung,                 0.0, 0.0 );
01704      glVertex3d( breite*richtung,     laenge*richtung, 0.0 );
01705      glVertex3d( breite*richtung,     laenge*richtung, hoehe-10 );
01706      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe-5 );
01707      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe-5 );
01708      glVertex3d( breite*richtung, (laenge-7)*richtung, hoehe );
01709      glVertex3d( breite*richtung,  2.0*richtung, hoehe );
01710      glVertex3d( breite*richtung,                 0.0, hoehe-5 );
01711     glEnd();
01712    
01713     // Seitenwand zwei
01714     glBegin(GL_POLYGON);
01715      setMaterialColor3d( fahrzeug->gibFarbe() );
01716    
01717      glVertex3d( 0.0,                 0.0, 0.0 );
01718      glVertex3d( 0.0,                 0.0, hoehe-5 );
01719      glVertex3d( 0.0,  2.0*richtung, hoehe );
01720      glVertex3d( 0.0, (laenge-7)*richtung, hoehe );
01721      glVertex3d( 0.0, (laenge-7)*richtung, hoehe-5 );
01722      glVertex3d( 0.0, (laenge-2)*richtung, hoehe-5 );
01723      glVertex3d( 0.0,     laenge*richtung, hoehe-10 );
01724      glVertex3d( 0.0,     laenge*richtung, 0.0 );
01725     glEnd();
01726    }
01727    else
01728    {
01729     // Bodenplatte
01730     glBegin(GL_QUADS);
01731      setMaterialColor3d( fahrzeug->gibFarbe() );
01732     
01733      glVertex3d(             0.0, breite*richtung, 0.0 );
01734      glVertex3d( laenge*richtung, breite*richtung, 0.0 );
01735      glVertex3d( laenge*richtung, 0.0,             0.0 );
01736      glVertex3d(             0.0, 0.0,             0.0 );
01737     glEnd();
01738     
01739     // Front unten
01740     glBegin(GL_QUADS);
01741      setMaterialColor3d( fahrzeug->gibFarbe() );
01742     
01743      glVertex3d( laenge*richtung,             0.0, 0.0 );
01744      glVertex3d( laenge*richtung, breite*richtung, 0.0 );
01745      glVertex3d( laenge*richtung, breite*richtung, hoehe-10 );
01746      glVertex3d( laenge*richtung,             0.0, hoehe-10 );
01747     glEnd();
01748     
01749     // Front oben
01750     glBegin(GL_QUADS);
01751      setMaterialColor3d( fahrzeug->gibFarbe() );
01752     
01753      glVertex3d( (laenge-2)*richtung,             0.0, hoehe-5 );
01754      glVertex3d(     laenge*richtung,             0.0, hoehe-10 );
01755      glVertex3d(     laenge*richtung, breite*richtung, hoehe-10 );
01756      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe-5 );
01757     glEnd();
01758     
01759     // Front Dach
01760     glBegin(GL_QUADS);
01761      setMaterialColor3d( fahrzeug->gibFarbe() );
01762     
01763      glVertex3d( (laenge-2)*richtung,             0.0, hoehe-5 );
01764      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe-5 );
01765      glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe-5 );
01766      glVertex3d( (laenge-7)*richtung,             0.0, hoehe-5 );
01767     glEnd();
01768     
01769     // Dach Front
01770     glBegin(GL_QUADS);
01771      setMaterialColor3d( fahrzeug->gibFarbe() );
01772     
01773      glVertex3d( (laenge-7)*richtung,             0.0, hoehe-5 );
01774      glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe-5 );
01775      glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe );
01776      glVertex3d( (laenge-7)*richtung,             0.0, hoehe );
01777     glEnd();
01778     
01779     // Dach
01780     glBegin(GL_QUADS);
01781                                         setMaterialColor3d( fahrzeug->gibFarbe() );
01782                                 
01783                                         glVertex3d( (laenge-7)*richtung,             0.0, hoehe );
01784                                         glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe );
01785                                         glVertex3d( 2.0*richtung,        breite*richtung, hoehe );
01786                                         glVertex3d( 2.0*richtung,                    0.0, hoehe );
01787                                 glEnd();
01788                                 
01789                                 // Heck oben (als Bremslicht)
01790                                 glBegin(GL_QUADS);
01791                                         if( bremsen )
01792                                                 setMaterialColor3d( *rot );
01793      else
01794       setMaterialColor3d( fahrzeug->gibFarbe() );
01795     
01796      glVertex3d( 2.0*richtung,             0.0, hoehe );
01797      glVertex3d( 2.0*richtung, breite*richtung, hoehe );
01798      glVertex3d( 0.0,          breite*richtung, hoehe-5 );
01799      glVertex3d( 0.0,                      0.0, hoehe-5 );
01800     glEnd();
01801     
01802     // Heck unten
01803     glBegin(GL_QUADS);
01804      setMaterialColor3d( fahrzeug->gibFarbe() );
01805     
01806      glVertex3d( 0.0,             0.0, hoehe-5 );
01807      glVertex3d( 0.0, breite*richtung, hoehe-5 );
01808      glVertex3d( 0.0, breite*richtung, 0.0 );
01809      glVertex3d( 0.0,             0.0, 0.0 );
01810     glEnd();
01811     
01812     // Seitenwand eins
01813     glBegin(GL_POLYGON);
01814      setMaterialColor3d( fahrzeug->gibFarbe() );
01815     
01816      glVertex3d(                 0.0, breite*richtung, 0.0 );
01817      glVertex3d(                 0.0, breite*richtung, hoehe-5 );
01818      glVertex3d(     2.0*richtung, breite*richtung, hoehe );
01819      glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe );
01820      glVertex3d( (laenge-7)*richtung, breite*richtung, hoehe-5 );
01821      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe-5 );
01822      glVertex3d(     laenge*richtung, breite*richtung, hoehe-10 );
01823      glVertex3d(     laenge*richtung, breite*richtung, 0.0 );
01824     glEnd();
01825     
01826     // Seitenwand zwei
01827     glBegin(GL_POLYGON);
01828      setMaterialColor3d( fahrzeug->gibFarbe() );
01829     
01830      glVertex3d(                 0.0, 0.0, 0.0 );
01831      glVertex3d(     laenge*richtung, 0.0, 0.0 );
01832      glVertex3d(     laenge*richtung, 0.0, hoehe-10 );
01833      glVertex3d( (laenge-2)*richtung, 0.0, hoehe-5 );
01834      glVertex3d( (laenge-7)*richtung, 0.0, hoehe-5 );
01835      glVertex3d( (laenge-7)*richtung, 0.0, hoehe );
01836      glVertex3d(     2.0*richtung, 0.0, hoehe );
01837      glVertex3d(                 0.0, 0.0, hoehe-5 );
01838     glEnd();
01839    }
01840   } break;
01841   
01842   //----------------------------------------------------------------
01843   case BUS:
01844   {   hoehe = 20.0;
01845    breite = 15.0;
01846    
01847    if( ausrichtung == HOR )
01848    {
01849     // Bodenplatte
01850     glBegin(GL_QUADS);
01851      setMaterialColor3d( fahrzeug->gibFarbe() );
01852     
01853      glVertex3d(                 0.0, breite*richtung, 0.0 );
01854      glVertex3d( (laenge-2)*richtung, breite*richtung, 0.0 );
01855      glVertex3d( (laenge-2)*richtung,             0.0, 0.0 );
01856      glVertex3d(        0.0,             0.0, 0.0 );
01857     glEnd();
01858     
01859     // Front unten
01860     glBegin(GL_QUADS);
01861      setMaterialColor3d( fahrzeug->gibFarbe() );
01862     
01863      glVertex3d( (laenge-2)*richtung,             0.0, 0.0 );
01864      glVertex3d( (laenge-2)*richtung, breite*richtung, 0.0 );
01865      glVertex3d(     laenge*richtung, breite*richtung, 5.0 );
01866      glVertex3d(     laenge*richtung,             0.0, 5.0 );
01867     glEnd();
01868     
01869     // Front oben
01870     glBegin(GL_QUADS);
01871      setMaterialColor3d( fahrzeug->gibFarbe() );
01872     
01873      glVertex3d( (laenge-2)*richtung,             0.0, hoehe );
01874      glVertex3d(     laenge*richtung,             0.0, 5.0 );
01875      glVertex3d(     laenge*richtung, breite*richtung, 5.0 );
01876      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe );
01877     glEnd();
01878     
01879     // Dach
01880     glBegin(GL_QUADS);
01881      setMaterialColor3d( fahrzeug->gibFarbe() );
01882     
01883      glVertex3d( (laenge-2)*richtung,             0.0, hoehe );
01884      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe );
01885      glVertex3d(     2.0*richtung, breite*richtung, hoehe );
01886      glVertex3d(        2.0*richtung,             0.0, hoehe );
01887     glEnd();
01888     
01889     // Heck oben (als Bremslicht)
01890     glBegin(GL_QUADS);
01891      if( bremsen )
01892       setMaterialColor3d( *rot );
01893      else
01894                                                 setMaterialColor3d( fahrzeug->gibFarbe() );
01895                                 
01896                                         glVertex3d( 2.0*richtung,             0.0, hoehe );
01897      glVertex3d( 2.0*richtung, breite*richtung, hoehe );
01898      glVertex3d( 0.0,          breite*richtung, hoehe-5 );
01899      glVertex3d( 0.0,                      0.0, hoehe-5 );
01900     glEnd();
01901     
01902     // Heck unten
01903     glBegin(GL_QUADS);
01904      setMaterialColor3d( fahrzeug->gibFarbe() );
01905     
01906      glVertex3d( 0.0,             0.0, hoehe-5 );
01907      glVertex3d( 0.0, breite*richtung, hoehe-5 );
01908      glVertex3d( 0.0, breite*richtung, 0.0 );
01909      glVertex3d( 0.0,             0.0, 0.0 );
01910     glEnd();
01911     
01912     // Seitenwand eins
01913     glBegin(GL_POLYGON);
01914      setMaterialColor3d( fahrzeug->gibFarbe() );
01915     
01916      glVertex3d(                 0.0, 0.0, 0.0 );
01917      glVertex3d( (laenge-2)*richtung, 0.0, 0.0 );
01918      glVertex3d(     laenge*richtung, 0.0, 5.0 );
01919      glVertex3d( (laenge-2)*richtung, 0.0, hoehe );
01920      glVertex3d(     2.0*richtung, 0.0, hoehe );
01921      glVertex3d(                 0.0, 0.0, hoehe-5 );
01922     glEnd();
01923     
01924     // Seitenwand zwei
01925     glBegin(GL_POLYGON);
01926      setMaterialColor3d( fahrzeug->gibFarbe() );
01927     
01928      glVertex3d(                 0.0, breite*richtung, 0.0 );
01929      glVertex3d(                 0.0, breite*richtung, hoehe-5 );
01930      glVertex3d(     2.0*richtung, breite*richtung, hoehe );
01931      glVertex3d( (laenge-2)*richtung, breite*richtung, hoehe );
01932      glVertex3d(  laenge*richtung, breite*richtung, 5.0 );
01933      glVertex3d( (laenge-2)*richtung, breite*richtung, 0.0 );
01934     glEnd();
01935    }
01936    else
01937    {
01938     // Bodenplatte
01939     glBegin(GL_QUADS);
01940      setMaterialColor3d( fahrzeug->gibFarbe() );
01941     
01942      glVertex3d(  breite*richtung,                 0.0, 0.0 );
01943      glVertex3d(              0.0,                 0.0, 0.0 );
01944      glVertex3d(              0.0, (laenge-2)*richtung, 0.0 );
01945      glVertex3d(  breite*richtung, (laenge-2)*richtung, 0.0 );
01946     glEnd();
01947     
01948     // Front unten
01949     glBegin(GL_QUADS);
01950      setMaterialColor3d( fahrzeug->gibFarbe() );
01951     
01952      glVertex3d(             0.0, (laenge-2)*richtung, 0.0 );
01953      glVertex3d(             0.0,     laenge*richtung, 5.0 );
01954      glVertex3d( breite*richtung,     laenge*richtung, 5.0 );
01955      glVertex3d( breite*richtung, (laenge-2)*richtung, 0.0 );
01956     glEnd();
01957     
01958     // Front oben
01959     glBegin(GL_QUADS);
01960      setMaterialColor3d( fahrzeug->gibFarbe() );
01961     
01962      glVertex3d(             0.0, (laenge-2)*richtung, hoehe );
01963      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe );
01964      glVertex3d( breite*richtung,     laenge*richtung, 5.0 );
01965      glVertex3d(             0.0,     laenge*richtung, 5.0 );
01966     glEnd();
01967     
01968     // Dach
01969     glBegin(GL_QUADS);
01970      setMaterialColor3d( fahrzeug->gibFarbe() );
01971     
01972      glVertex3d(             0.0, (laenge-2)*richtung, hoehe );
01973      glVertex3d(             0.0, 2.0*richtung,        hoehe );
01974      glVertex3d( breite*richtung, 2.0*richtung,        hoehe );
01975      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe );
01976     glEnd();
01977     
01978     // Heck oben
01979     glBegin(GL_QUADS);
01980      if( bremsen )
01981       setMaterialColor3d( *rot );
01982      else
01983       setMaterialColor3d( fahrzeug->gibFarbe() );
01984     
01985      glVertex3d(             0.0, 2.0*richtung, hoehe );
01986      glVertex3d(             0.0, 0.0         , hoehe-5 );
01987      glVertex3d( breite*richtung, 0.0         , hoehe-5 );
01988      glVertex3d( breite*richtung, 2.0*richtung, hoehe );
01989     glEnd();
01990     
01991     // Heck unten (als Bremslicht)
01992     glBegin(GL_QUADS);
01993      setMaterialColor3d( fahrzeug->gibFarbe() );
01994     
01995      glVertex3d(             0.0, 0.0, hoehe-5 );
01996      glVertex3d(             0.0, 0.0, 0.0 );
01997      glVertex3d( breite*richtung, 0.0, 0.0 );
01998      glVertex3d( breite*richtung, 0.0, hoehe-5 );
01999     glEnd();
02000     
02001     // Seitenwand eins
02002     glBegin(GL_POLYGON);
02003     setMaterialColor3d( fahrzeug->gibFarbe() );
02004     
02005      glVertex3d( 0.0,                 0.0, 0.0 );
02006      glVertex3d( 0.0,                 0.0, hoehe-5 );
02007      glVertex3d( 0.0,     2.0*richtung, hoehe );
02008      glVertex3d( 0.0, (laenge-2)*richtung, hoehe );
02009      glVertex3d( 0.0,     laenge*richtung, 5.0 );
02010      glVertex3d( 0.0, (laenge-2)*richtung, 0.0 );
02011     glEnd();
02012     
02013     // Seitenwand zwei
02014     glBegin(GL_POLYGON);
02015      setMaterialColor3d( fahrzeug->gibFarbe() );
02016     
02017      glVertex3d( breite*richtung, (laenge-2)*richtung, 0.0 );
02018      glVertex3d( breite*richtung,     laenge*richtung, 5.0 );
02019      glVertex3d( breite*richtung, (laenge-2)*richtung, hoehe );
02020                                         glVertex3d( breite*richtung,            2.0*richtung, hoehe );
02021                                         glVertex3d( breite*richtung,                 0.0, hoehe-5 );
02022                                         glVertex3d( breite*richtung,                 0.0, 0.0 );
02023                                 glEnd();
02024                         }
02025                 } break;
02026                 
02027                 //----------------------------------------------------------------
02028                 case BIKE:
02029                 {   hoehe = 6;
02030                         breite = 4;
02031 
02032                         if( ausrichtung == HOR )
02033                         {
02034                                 // Hinterrad hinten
02035                                 glBegin(GL_QUADS);
02036                                         setMaterialColor3d( *schwarz );
02037                                 
02038                                         glVertex3d(     0.0,             0.0, 0.0 );
02039                                         glVertex3d( 0.0,             0.0, 4.0 );
02040                                         glVertex3d( 0.0, breite*richtung, 4.0 );
02041                                         glVertex3d( 0.0, breite*richtung, 0.0 );
02042                                 glEnd();
02043                                 
02044                                 // Hinterradboden
02045                                 glBegin(GL_QUADS);
02046                                         setMaterialColor3d( *schwarz );
02047                                 
02048                                         glVertex3d(          0.0, breite*richtung, 0.0 );
02049                                         glVertex3d( 5.0*richtung, breite*richtung, 0.0 );
02050                                         glVertex3d( 5.0*richtung,             0.0, 0.0 );
02051                                         glVertex3d(          0.0,             0.0, 0.0 );
02052                                 glEnd();
02053                                 
02054                                 // Hinterrad vorne
02055                                 glBegin(GL_QUADS);
02056                                         setMaterialColor3d( *schwarz );
02057                                 
02058                                         glVertex3d(     5.0*richtung,             0.0, 0.0 );
02059                                         glVertex3d( 5.0*richtung, breite*richtung, 0.0 );
02060                                         glVertex3d( 5.0*richtung, breite*richtung, 2.0 );
02061                                         glVertex3d( 5.0*richtung,             0.0, 2.0 );
02062                                 glEnd();
02063                                 
02064                                 // Mittelboden
02065                                 glBegin(GL_QUADS);
02066                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02067                                 
02068                                         glVertex3d(        5.0*richtung, breite*richtung, 2.0 );
02069                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 2.0 );
02070                                         glVertex3d( (laenge-5)*richtung,             0.0, 2.0 );
02071                                         glVertex3d(        5.0*richtung,             0.0, 2.0 );
02072                                 glEnd();
02073                                 
02074                                 // Vorderrad hinten
02075                                 glBegin(GL_QUADS);
02076                                         setMaterialColor3d( *schwarz );
02077                                 
02078                                         glVertex3d(     (laenge-5)*richtung,             0.0, 0.0 );
02079                                         glVertex3d( (laenge-5)*richtung,             0.0, 2.0 );
02080                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 2.0 );
02081                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 0.0 );
02082                                 glEnd();
02083                                 
02084                                 // Vorderradboden
02085                                 glBegin(GL_QUADS);
02086                                         setMaterialColor3d( *schwarz );
02087                                 
02088                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 0.0 );
02089                                         glVertex3d(     laenge*richtung, breite*richtung, 0.0 );
02090                                         glVertex3d(     laenge*richtung,             0.0, 0.0 );
02091                                         glVertex3d( (laenge-5)*richtung,             0.0, 0.0 );
02092                                 glEnd();
02093                                 
02094                                 // Vorderrad vorne
02095                                 glBegin(GL_QUADS);
02096                                         setMaterialColor3d( *schwarz );
02097                                 
02098                                         glVertex3d(     laenge*richtung,             0.0, 0.0 );
02099                                         glVertex3d( laenge*richtung, breite*richtung, 0.0 );
02100                                         glVertex3d( laenge*richtung, breite*richtung, 4.0 );
02101                                         glVertex3d( laenge*richtung,             0.0, 4.0 );
02102                                 glEnd();
02103                                 
02104                                 // Front oben
02105                                 glBegin(GL_QUADS);
02106                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02107                                 
02108                                         glVertex3d(         laenge*richtung,             0.0, 4.0 );
02109                                         glVertex3d(     laenge*richtung, breite*richtung, 4.0 );
02110                                         glVertex3d( (laenge-3)*richtung, breite*richtung, hoehe );
02111                                         glVertex3d( (laenge-3)*richtung,             0.0, hoehe );
02112                                 glEnd();
02113                                 
02114                                 // Dach
02115                                 glBegin(GL_QUADS);
02116                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02117                                 
02118                                         glVertex3d(     (laenge-3)*richtung,             0.0, hoehe );
02119                                         glVertex3d( (laenge-3)*richtung, breite*richtung, hoehe );
02120                                         glVertex3d(                5.0*richtung, breite*richtung, hoehe );
02121                                         glVertex3d(        5.0*richtung,             0.0, hoehe );
02122                                 glEnd();
02123                                 
02124                                 // Heck oben (als Bremslicht)
02125                                 glBegin(GL_QUADS);
02126                                         if( bremsen )
02127                                                 setMaterialColor3d( *rot );
02128                                         else
02129                                                 setMaterialColor3d( fahrzeug->gibFarbe() );
02130                                 
02131                                         glVertex3d( 5.0*richtung,             0.0, hoehe );
02132                                         glVertex3d( 5.0*richtung, breite*richtung, hoehe );
02133                                         glVertex3d( 3.0*richtung, breite*richtung, 4.0 );
02134                                         glVertex3d( 3.0*richtung,             0.0, 4.0 );
02135                                 glEnd();
02136                                 
02137                                 // Hinterrad oben
02138                                 glBegin(GL_QUADS);
02139                                         setMaterialColor3d( *schwarz );
02140                                 
02141                                         glVertex3d(              0.0,             0.0, 4.0 );
02142                                         glVertex3d( 3.0*richtung,             0.0, 4.0 );
02143                                         glVertex3d(     3.0*richtung, breite*richtung, 4.0 );
02144                                         glVertex3d(          0.0, breite*richtung, 4.0 );
02145                                 glEnd();
02146                                 
02147                                 // Hinterradseitenwand eins
02148                                 glBegin(GL_POLYGON);
02149                                         setMaterialColor3d( *schwarz );
02150                                 
02151                                         glVertex3d(          0.0, 0.0, 0.0 );
02152                                         glVertex3d( 5.0*richtung, 0.0, 0.0 );
02153                                         glVertex3d( 5.0*richtung, 0.0, 2.0 );
02154                                         glVertex3d( 3.0*richtung, 0.0, 4.0 );
02155                                         glVertex3d(          0.0, 0.0, 4.0 );
02156                                 glEnd();
02157                                 
02158                                 // Hinterradseitenwand zwei
02159                                 glBegin(GL_POLYGON);
02160                                         setMaterialColor3d( *schwarz );
02161                                 
02162                                         glVertex3d(          0.0, breite*richtung, 0.0 );
02163                                         glVertex3d(          0.0, breite*richtung, 4.0 );
02164                                         glVertex3d( 3.0*richtung, breite*richtung, 4.0 );
02165                                         glVertex3d( 5.0*richtung, breite*richtung, 2.0 );
02166                                         glVertex3d( 5.0*richtung, breite*richtung, 0.0 );
02167                                 glEnd();
02168                                 
02169                                 // Vorderradseitenwand eins
02170                                 glBegin(GL_QUADS);
02171                                         setMaterialColor3d( *schwarz );
02172                                 
02173                                         glVertex3d( (laenge-5)*richtung, 0.0, 0.0 );
02174                                         glVertex3d(     laenge*richtung, 0.0, 0.0 );
02175                                         glVertex3d(     laenge*richtung, 0.0, 4.0 );
02176                                         glVertex3d( (laenge-5)*richtung, 0.0, 2.0 );
02177                                 glEnd();
02178                                 
02179                                 // Vorderradseitenwand zwei
02180                                 glBegin(GL_QUADS);
02181                                         setMaterialColor3d( *schwarz );
02182                                 
02183                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 0.0 );
02184                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 2.0 );
02185                                         glVertex3d(     laenge*richtung, breite*richtung, 4.0 );
02186                                         glVertex3d(     laenge*richtung, breite*richtung, 0.0 );
02187                                 glEnd();
02188                                 
02189                                 // Chassieseitenwand eins
02190                                 glBegin(GL_POLYGON);
02191                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02192                                 
02193                                         glVertex3d(        3.0*richtung, 0.0, 4.0 );
02194                                         glVertex3d(        5.0*richtung, 0.0, 2.0 );
02195                                         glVertex3d( (laenge-5)*richtung, 0.0, 2.0 );
02196                                         glVertex3d(     laenge*richtung, 0.0, 4.0 );
02197                                         glVertex3d( (laenge-3)*richtung, 0.0, hoehe );
02198                                         glVertex3d(        5.0*richtung, 0.0, hoehe );
02199                                 glEnd();
02200                                 
02201                                 // Chassieseitenwand zwei
02202                                 glBegin(GL_POLYGON);
02203                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02204                                 
02205                                         glVertex3d(        3.0*richtung, breite*richtung, 4.0 );
02206                                         glVertex3d(        5.0*richtung, breite*richtung, hoehe );
02207                                         glVertex3d( (laenge-3)*richtung, breite*richtung, hoehe );
02208                                         glVertex3d(     laenge*richtung, breite*richtung, 4.0 );
02209                                         glVertex3d( (laenge-5)*richtung, breite*richtung, 2.0 );
02210                                         glVertex3d(        5.0*richtung, breite*richtung, 2.0 );
02211                                 glEnd();
02212                         }
02213                         else
02214 
02215                         {
02216                                 // Hinterrad hinten
02217                                 glBegin(GL_QUADS);
02218                                         setMaterialColor3d( *schwarz );
02219                                 
02220                                         glVertex3d(                 0.0, 0.0, 0.0 );
02221                                         glVertex3d( breite*richtung, 0.0, 0.0 );
02222                                         glVertex3d( breite*richtung, 0.0, 4.0 );
02223                                         glVertex3d(             0.0, 0.0, 4.0 );
02224                                 glEnd();
02225                                 
02226                                 // Hinterradboden
02227                                 glBegin(GL_QUADS);
02228                                         setMaterialColor3d( *schwarz );
02229                                 
02230                                         glVertex3d( breite*richtung,          0.0, 0.0 );
02231                                         glVertex3d(             0.0,          0.0, 0.0 );
02232                                         glVertex3d(             0.0, 5.0*richtung, 0.0 );
02233                                         glVertex3d( breite*richtung, 5.0*richtung, 0.0 );
02234                                 glEnd();
02235                                 
02236                                 // Hinterrad vorne
02237                                 glBegin(GL_QUADS);
02238                                         setMaterialColor3d( *schwarz );
02239                                 
02240                                         glVertex3d(                 0.0, 5.0*richtung, 0.0 );
02241                                         glVertex3d(             0.0, 5.0*richtung, 2.0 );
02242                                         glVertex3d( breite*richtung, 5.0*richtung, 2.0 );
02243                                         glVertex3d( breite*richtung, 5.0*richtung, 0.0 );
02244                                 glEnd();
02245                                 
02246                                 // Mittelboden
02247                                 glBegin(GL_QUADS);
02248                                         setMaterialColor3d( fahrzeug->gibFarbe() );
02249                                 
02250                                         glVertex3d( breite*richtung,        5.0*richtung, 2.0 );
02251                                         glVertex3d(             0.0,        5.0*richtung, 2.0 );
02252                                         glVertex3d(             0.0, (laenge-5)*richtung, 2.0 );
02253                                         glVertex3d( breite*richtung, (laenge-5)*richtung, 2.0 );
02254                                 glEnd();
02255     
02256     // Vorderrad hinten
02257     glBegin(GL_QUADS);
02258      setMaterialColor3d( *schwarz );
02259     
02260      glVertex3d(             0.0, (laenge-5)*richtung, 0.0 );
02261      glVertex3d( breite*richtung, (laenge-5)*richtung, 0.0 );
02262      glVertex3d( breite*richtung, (laenge-5)*richtung, 2.0 );
02263      glVertex3d(             0.0, (laenge-5)*richtung, 2.0 );
02264     glEnd();
02265     
02266     // Vorderradboden
02267     glBegin(GL_QUADS);
02268      setMaterialColor3d( *schwarz );
02269     
02270      glVertex3d( breite*richtung, (laenge-5)*richtung, 0.0 );
02271      glVertex3d(             0.0, (laenge-5)*richtung, 0.0 );
02272      glVertex3d(             0.0,     laenge*richtung, 0.0 );
02273      glVertex3d( breite*richtung,     laenge*richtung, 0.0 );
02274     glEnd();
02275     
02276     // Vorderrad vorne
02277     glBegin(GL_QUADS);
02278      setMaterialColor3d( *schwarz );
02279     
02280      glVertex3d(             0.0, laenge*richtung, 0.0 );
02281      glVertex3d(             0.0, laenge*richtung, 4.0 );
02282      glVertex3d( breite*richtung, laenge*richtung, 4.0 );
02283      glVertex3d( breite*richtung, laenge*richtung, 0.0 );
02284     glEnd();
02285     
02286     // Front oben
02287     glBegin(GL_QUADS);
02288      setMaterialColor3d( fahrzeug->gibFarbe() );
02289     
02290      glVertex3d(             0.0,     laenge*richtung, 4.0 );
02291      glVertex3d(             0.0, (laenge-3)*richtung, hoehe );
02292      glVertex3d( breite*richtung, (laenge-3)*richtung, hoehe );
02293      glVertex3d( breite*richtung,     laenge*richtung, 4.0 );
02294     glEnd();
02295     
02296     // Dach
02297     glBegin(GL_QUADS);
02298      setMaterialColor3d( fahrzeug->gibFarbe() );
02299     
02300      glVertex3d(             0.0, (laenge-3)*richtung, hoehe );
02301      glVertex3d(             0.0,        5.0*richtung, hoehe );
02302      glVertex3d( breite*richtung,        5.0*richtung, hoehe );
02303      glVertex3d( breite*richtung, (laenge-3)*richtung, hoehe );
02304     glEnd();
02305     
02306     // Heck oben (als Bremslicht)
02307     glBegin(GL_QUADS);
02308      if( bremsen )
02309       setMaterialColor3d( *rot );
02310      else
02311       setMaterialColor3d( fahrzeug->gibFarbe() );
02312     
02313      glVertex3d(             0.0, 5.0*richtung, hoehe );
02314      glVertex3d(             0.0, 3.0*richtung, 4.0 );
02315      glVertex3d( breite*richtung, 3.0*richtung, 4.0 );
02316      glVertex3d( breite*richtung, 5.0*richtung, hoehe );
02317     glEnd();
02318     
02319     // Hinterrad oben
02320     glBegin(GL_QUADS);
02321      setMaterialColor3d( *schwarz );
02322                                 
02323                                         glVertex3d(                 0.0,          0.0, 4.0 );
02324                                         glVertex3d( breite*richtung,          0.0, 4.0 );
02325      glVertex3d( breite*richtung, 3.0*richtung, 4.0 );
02326      glVertex3d(             0.0, 3.0*richtung, 4.0 );
02327     glEnd();
02328     
02329     // Hinterradseitenwand eins
02330     glBegin(GL_POLYGON);
02331      setMaterialColor3d( *schwarz );
02332     
02333      glVertex3d( 0.0,          0.0, 0.0 );
02334      glVertex3d( 0.0,          0.0, 4.0 );
02335      glVertex3d( 0.0, 3.0*richtung, 4.0 );
02336      glVertex3d( 0.0, 5.0*richtung, 2.0 );
02337      glVertex3d( 0.0, 5.0*richtung, 0.0 );
02338     glEnd();
02339     
02340     // Hinterradseitenwand zwei
02341     glBegin(GL_POLYGON);
02342      setMaterialColor3d( *schwarz );
02343     
02344      glVertex3d( breite*richtung,          0.0, 0.0 );
02345      glVertex3d( breite*richtung, 5.0*richtung, 0.0 );
02346      glVertex3d( breite*richtung, 5.0*richtung, 2.0 );
02347      glVertex3d( breite*richtung, 3.0*richtung, 4.0 );
02348      glVertex3d( breite*richtung,          0.0, 4.0 );
02349     glEnd();
02350     
02351     // Vorderradseitenwand eins
02352     glBegin(GL_QUADS);
02353      setMaterialColor3d( *schwarz );
02354     
02355      glVertex3d( 0.0, (laenge-5)*richtung, 0.0 );
02356      glVertex3d( 0.0, (laenge-5)*richtung, 2.0 );
02357      glVertex3d( 0.0,     laenge*richtung, 4.0 );
02358      glVertex3d( 0.0,     laenge*richtung, 0.0 );
02359     glEnd();
02360     
02361     // Vorderradseitenwand zwei
02362     glBegin(GL_QUADS);
02363      setMaterialColor3d( *schwarz );
02364     
02365      glVertex3d( breite*richtung, (laenge-5)*richtung, 0.0 );
02366      glVertex3d( breite*richtung,     laenge*richtung, 0.0 );
02367      glVertex3d( breite*richtung,     laenge*richtung, 4.0 );
02368      glVertex3d( breite*richtung, (laenge-5)*richtung, 2.0 );
02369     glEnd();
02370     
02371     // Chassieseitenwand eins
02372     glBegin(GL_POLYGON);
02373      setMaterialColor3d( fahrzeug->gibFarbe() );
02374     
02375      glVertex3d( 0.0,        3.0*richtung, 4.0 );
02376      glVertex3d( 0.0,        5.0*richtung, hoehe );
02377      glVertex3d( 0.0, (laenge-3)*richtung, hoehe );
02378      glVertex3d( 0.0,     laenge*richtung, 4.0 );
02379      glVertex3d( 0.0, (laenge-5)*richtung, 2.0 );
02380      glVertex3d( 0.0,        5.0*richtung, 2.0 );
02381     glEnd();
02382     
02383     // Chassieseitenwand zwei
02384     glBegin(GL_POLYGON);
02385      setMaterialColor3d( fahrzeug->gibFarbe() );
02386     
02387      glVertex3d( breite*richtung,        3.0*richtung, 4.0 );
02388      glVertex3d( breite*richtung,        5.0*richtung, 2.0 );
02389      glVertex3d( breite*richtung, (laenge-5)*richtung, 2.0 );
02390      glVertex3d( breite*richtung,     laenge*richtung, 4.0 );
02391      glVertex3d( breite*richtung, (laenge-3)*richtung, hoehe );
02392      glVertex3d( breite*richtung,        5.0*richtung, hoehe );
02393     glEnd();
02394    }
02395   } break;
02396  }   
02397 
02398  // Koordinatensystem zurueckschieben
02399  glTranslated( -1*fahrzeugPosition->x, -1*fahrzeugPosition->y, -1*fahrzeugPosition->z);
02400 }
02401 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
02402 
02403 
02404 
02405 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
02414 void GLWireframe::setMaterialColor3d(Koordinaten farbe)
02415 {
02416  glColor3d( farbe.x/255, farbe.y/255, farbe.z/255 );
02417 
02418  /*GLfloat matColor[]  = {1,1,1,0};
02419  GLfloat specColor[] = {1,1,1,0};
02420  GLfloat noColor[]   = {0,0,0,0};
02421  GLfloat shine[]     = {5.0};
02422  
02423  matColor[0] = farbe.x/255;
02424  matColor[1] = farbe.y/255;
02425  matColor[2] = farbe.z/255;
02426  
02427  glMaterialfv( GL_FRONT, GL_AMBIENT, matColor );
02428  glMaterialfv( GL_FRONT, GL_DIFFUSE, matColor );
02429  glMaterialfv( GL_FRONT, GL_SPECULAR, specColor );
02430  glMaterialfv( GL_FRONT, GL_SHININESS, shine );
02431  glMaterialfv( GL_FRONT, GL_EMISSION, noColor );*/
02432 }
02433 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
02434 
02435 
02436 
02437 //------------------------------------------------------------------------------------------------------------------
02446 void GLWireframe::setzeFahrzeugliste( Liste *fahrzeugliste )
02447 {
02448  fahrzeugliste_ = fahrzeugliste;
02449 }
02450 //------------------------------------------------------------------------------------------------------------------
02451 
02452 
02453 //------------------------------------------------------------------------------------------------------------------
02462 void GLWireframe::setzeKreuzungsliste( Liste *kreuzungsliste )
02463 {
02464  kreuzungsliste_ = kreuzungsliste;
02465 }
02466 //------------------------------------------------------------------------------------------------------------------
02467 
02468 
02469 //------------------------------------------------------------------------------------------------------------------
02479 void GLWireframe::setzeSpurenliste( Spur **spurenliste, long int anzahlSpuren )
02480 {
02481  spurenliste_ = spurenliste;
02482  anzahlSpuren_ = anzahlSpuren;
02483 }
02484 //------------------------------------------------------------------------------------------------------------------

Erzeugt am Tue Jun 14 18:36:49 2005 für TraffSpot von  doxygen 1.3.9.1