diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-09-09 18:50:45 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-09-09 18:50:45 +0000 |
commit | 146c9e449443453f3932b60cd1bab47f688403e7 (patch) | |
tree | f7f18d29a7a7755515db377b5de9658899de66bb /demos/opengl/quaternion_demo.h | |
parent | d3a70b7facea2919b5ee0451d3c639dedb00ea30 (diff) |
various stuff in opengl demos such as a better model,
stable trackball for the fly navigation mode, and started
to put some GUI elements...
Diffstat (limited to 'demos/opengl/quaternion_demo.h')
-rw-r--r-- | demos/opengl/quaternion_demo.h | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/demos/opengl/quaternion_demo.h b/demos/opengl/quaternion_demo.h index 11b003097..f0b883e19 100644 --- a/demos/opengl/quaternion_demo.h +++ b/demos/opengl/quaternion_demo.h @@ -32,8 +32,9 @@ #include <QTimer> #include <QtGui/QApplication> #include <QtOpenGL/QGLWidget> +#include <QtGui/QMainWindow> -class QuaternionDemo : public QGLWidget +class RenderingWidget : public QGLWidget { Q_OBJECT @@ -45,14 +46,31 @@ class QuaternionDemo : public QGLWidget bool mAnimate; float m_alpha; - enum TrackMode { TM_NO_TRACK=0, TM_ROTATE_AROUND, TM_ZOOM, - TM_QUAKE_ROTATE, TM_QUAKE_WALK, TM_QUAKE_PAN + TM_LOCAL_ROTATE, TM_FLY_Z, TM_FLY_PAN + }; + + enum NavMode { + NavTurnAround, + NavFly + }; + + enum LerpMode { + LerpQuaternion, + LerpEulerAngles + }; + + enum RotationMode { + RotationStable, + RotationStandard }; Camera mCamera; - TrackMode mTrackMode; + TrackMode mCurrentTrackingMode; + NavMode mNavMode; + LerpMode mLerpMode; + RotationMode mRotationMode; Vector2i mMouseCoords; Trackball mTrackball; @@ -60,15 +78,23 @@ class QuaternionDemo : public QGLWidget void setupCamera(); + std::vector<Vector3f> mVertices; + std::vector<Vector3f> mNormals; + std::vector<int> mIndices; + protected slots: virtual void animate(void); virtual void drawScene(void); - virtual void drawPath(void); virtual void grabFrame(void); virtual void stopAnimation(); + virtual void setNavMode(int); + virtual void setLerpMode(int); + virtual void setRotationMode(int); + virtual void resetCamera(); + protected: virtual void initializeGL(); @@ -83,8 +109,19 @@ class QuaternionDemo : public QGLWidget //-------------------------------------------------------------------------------- public: + RenderingWidget(); + ~RenderingWidget() { } + + QWidget* createNavigationControlWidget(); +}; + +class QuaternionDemo : public QMainWindow +{ + Q_OBJECT + public: QuaternionDemo(); - ~QuaternionDemo() { } + protected: + RenderingWidget* mRenderingWidget; }; #endif // EIGEN_QUATERNION_DEMO_H |