123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // This file is part of Eigen, a lightweight C++ template library
- // for linear algebra.
- //
- // Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
- //
- // This Source Code Form is subject to the terms of the Mozilla
- // Public License v. 2.0. If a copy of the MPL was not distributed
- // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
- #ifndef EIGEN_QUATERNION_DEMO_H
- #define EIGEN_QUATERNION_DEMO_H
- #include "gpuhelper.h"
- #include "camera.h"
- #include "trackball.h"
- #include <map>
- #include <QTimer>
- #include <QtGui/QApplication>
- #include <QtOpenGL/QGLWidget>
- #include <QtGui/QMainWindow>
- class RenderingWidget : public QGLWidget
- {
- Q_OBJECT
- typedef std::map<float,Frame> TimeLine;
- TimeLine m_timeline;
- Frame lerpFrame(float t);
- Frame mInitFrame;
- bool mAnimate;
- float m_alpha;
- enum TrackMode {
- TM_NO_TRACK=0, TM_ROTATE_AROUND, TM_ZOOM,
- TM_LOCAL_ROTATE, TM_FLY_Z, TM_FLY_PAN
- };
- enum NavMode {
- NavTurnAround,
- NavFly
- };
- enum LerpMode {
- LerpQuaternion,
- LerpEulerAngles
- };
- enum RotationMode {
- RotationStable,
- RotationStandard
- };
- Camera mCamera;
- TrackMode mCurrentTrackingMode;
- NavMode mNavMode;
- LerpMode mLerpMode;
- RotationMode mRotationMode;
- Vector2i mMouseCoords;
- Trackball mTrackball;
- QTimer m_timer;
- 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 grabFrame(void);
- virtual void stopAnimation();
- virtual void setNavMode(int);
- virtual void setLerpMode(int);
- virtual void setRotationMode(int);
- virtual void resetCamera();
- protected:
- virtual void initializeGL();
- virtual void resizeGL(int width, int height);
- virtual void paintGL();
-
- //--------------------------------------------------------------------------------
- virtual void mousePressEvent(QMouseEvent * e);
- virtual void mouseReleaseEvent(QMouseEvent * e);
- virtual void mouseMoveEvent(QMouseEvent * e);
- virtual void keyPressEvent(QKeyEvent * e);
- //--------------------------------------------------------------------------------
- public:
- EIGEN_MAKE_ALIGNED_OPERATOR_NEW
-
- RenderingWidget();
- ~RenderingWidget() { }
- QWidget* createNavigationControlWidget();
- };
- class QuaternionDemo : public QMainWindow
- {
- Q_OBJECT
- public:
- QuaternionDemo();
- protected:
- RenderingWidget* mRenderingWidget;
- };
- #endif // EIGEN_QUATERNION_DEMO_H
|