RayTracing
|
00001 #ifndef SCENE3D_H 00002 #define SCENE3D_H 00003 00004 #include <QtOpenGL\QGLWidget> // подключаем класс QGLWidget 00005 00006 class Scene3D : public QGLWidget // класс Scene3D наследует встроенный класс QGLWidget 00007 { 00008 Q_OBJECT 00009 00010 private: 00011 GLfloat ratio; // отношение высоты окна виджета к его ширине 00012 00013 // для первой фигуры 00014 GLfloat xRot1; // угол поворота вокруг оси X 00015 GLfloat yRot1; // угол поворота вокруг оси Y 00016 GLfloat zRot1; // угол поворота вокруг оси Z 00017 GLfloat zTra1; // величина трансляции по оси Z 00018 00019 // для второй фигуры 00020 GLfloat xRot2; // угол поворота вокруг оси X 00021 GLfloat yRot2; // угол поворота вокруг оси Y 00022 GLfloat zRot2; // угол поворота вокруг оси Z 00023 GLfloat zTra2; // величина трансляции по оси Z 00024 00025 QTimer *timer; // декларируем таймер 00026 00027 void getVerTexArrays(); // определить массив вершин 00028 void getIndexArray(); // определить массив индексов вершин 00029 void genTextures(); // создать текстуры 00030 void drawFigure(); // построить фигуру 00031 00032 void selectFigures(QPoint mp); // выбрать фигуру 00033 00034 protected: 00035 void initializeGL(); // метод для проведения инициализаций, связанных с OpenGL 00036 void resizeGL(int nWidth, int nHeight); // метод вызывается при изменении размеров окна виджета 00037 void paintGL(); // метод, чтобы заново перерисовать содержимое виджета 00038 void mousePressEvent(QMouseEvent* pe); // метод обработки события мыши при нажатии клавиши мыши 00039 00040 private slots: // слоты 00041 void change(); // изменение углов поворота и величины трансляции 00042 void changeTex(); // поменять текстуры местами 00043 void stopTmr(); // остановить таймер 00044 void startTmr(); // запустить таймер 00045 00046 public: 00047 Scene3D(QWidget* parent = 0); // конструктор класса 00048 ~Scene3D(); // деструктор 00049 }; 00050 #endif