00001 00006 #ifndef __GLWIREFRAME__ 00007 #define __GLWIREFRAME__ 00008 00009 #include <qgl.h> 00010 00011 00012 #include "../Fahrzeug.h" 00013 #include "../Kreuzung.h" 00014 #include "../Konstanten.h" 00015 #include "../Liste.h" 00016 #include "../Spur.h" 00017 00018 00024 class GLWireframe : public QGLWidget 00025 { 00026 Q_OBJECT 00027 00028 public: 00029 GLWireframe( QWidget* parent = 0, const char* name = 0, QGLWidget *share = 0, WFlags f = 0, Spur** spurenliste = 0, long int anzahlSpuren = 0, Liste *kreuzungsliste = 0 ); 00030 GLWireframe( QWidget* parent , const char* name , QGLWidget *share , WFlags f , 00031 double xRotD, double yRotD, double zRotD, double xKameraD, double yKameraD, double zKameraD, Spur** spurenliste, long int anzahlSpuren, Liste *kreuzungsliste ); 00032 ~GLWireframe(); 00033 00034 double gibXRot(); 00035 double gibYRot(); 00036 double gibZRot(); 00037 00038 double gibXKamera(); 00039 double gibYKamera(); 00040 double gibZKamera(); 00041 00042 void setzeFahrzeugliste( Liste *fahrzeugliste ); 00043 void setzeSpurenliste(Spur** spurenliste, long int anzahlSpuren); 00044 void setzeKreuzungsliste(Liste *kreuzungsliste); 00045 00046 void zeichne(); 00047 00048 public slots: 00049 void setzeXRotation( double grad ); 00050 void setzeYRotation( double grad ); 00051 void setzeZRotation( double grad ); 00052 00053 void setzeRotationImpulse( double x, double y, double z ); 00054 void setzeTranslationImpulse( double x, double y); 00055 void setzeZoom( double aenderung ); 00056 00057 void setzeMaussteuerung( int maussteuerung ); 00058 00059 void ladeWerkseinstellungen(); 00060 00061 protected: 00062 void initializeGL(); 00063 void paintGL(); 00064 void resizeGL( int breite, int hoehe ); 00065 void transform(); 00066 00067 void clear(); 00068 void ladeStandardwerte(); 00069 double gibMaximaleAusdehnung(); 00070 void erzeugeParameter(); 00071 00072 void mousePressEvent( QMouseEvent *event ); 00073 void mouseReleaseEvent( QMouseEvent *event ); 00074 void mouseMoveEvent( QMouseEvent *event ); 00075 void wheelEvent( QWheelEvent *event ); 00076 00077 void setMaterialColor3d(Koordinaten farbe); 00078 void erzeugeZeichenliste(); 00079 void zeichneSpur(Spur *spur); 00080 void zeichneHaltelinie(Spur *spur); 00081 void zeichneSpurverbindung(Spur *vorgaenger, Spur *nachfolger); 00082 void zeichneFahrzeug( Fahrzeug *fahrzeug ); 00083 void zeichneKreuzung( Kreuzung *kreuzung ); 00084 00085 private: 00086 00087 GLuint list_; 00088 long int anzahlSpuren_; 00089 double maximaleKoordinaten_[3]; 00090 double minimaleKoordinaten_[3]; 00091 double verschiebungsKoordinaten_[3]; 00092 00093 GLfloat xRot_; 00094 GLfloat yRot_; 00095 GLfloat zRot_; 00096 double punktKamera_[3]; 00097 double punktReferenz_[3]; 00098 double vectorKameraOben_[3]; 00099 QPoint oldPos_; 00100 00101 GLfloat standardxRot_; 00102 GLfloat standardyRot_; 00103 GLfloat standardzRot_; 00104 double standardpunktKamera_[3]; 00105 double standardpunktReferenz_[3]; 00106 double standardvectorKameraOben_[3]; 00107 00108 Liste *fahrzeugliste_; 00109 Liste *generatorliste_; 00110 Liste *kreuzungsliste_; 00111 Spur **spurenliste_; 00112 00113 int maussteuerung_; 00114 }; 00115 00116 00117 #endif