aboutsummaryrefslogtreecommitdiffhomepage
path: root/demos/opengl/quaternion_demo.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-09-09 18:50:45 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-09-09 18:50:45 +0000
commit146c9e449443453f3932b60cd1bab47f688403e7 (patch)
treef7f18d29a7a7755515db377b5de9658899de66bb /demos/opengl/quaternion_demo.h
parentd3a70b7facea2919b5ee0451d3c639dedb00ea30 (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.h49
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