TR-mbed 1.0
Loading...
Searching...
No Matches
quaternion_demo.h
Go to the documentation of this file.
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr>
5//
6// This Source Code Form is subject to the terms of the Mozilla
7// Public License v. 2.0. If a copy of the MPL was not distributed
8// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10#ifndef EIGEN_QUATERNION_DEMO_H
11#define EIGEN_QUATERNION_DEMO_H
12
13#include "gpuhelper.h"
14#include "camera.h"
15#include "trackball.h"
16#include <map>
17#include <QTimer>
18#include <QtGui/QApplication>
19#include <QtOpenGL/QGLWidget>
20#include <QtGui/QMainWindow>
21
22class RenderingWidget : public QGLWidget
23{
24 Q_OBJECT
25
26 typedef std::map<float,Frame> TimeLine;
27 TimeLine m_timeline;
28 Frame lerpFrame(float t);
29
30 Frame mInitFrame;
31 bool mAnimate;
32 float m_alpha;
33
34 enum TrackMode {
35 TM_NO_TRACK=0, TM_ROTATE_AROUND, TM_ZOOM,
36 TM_LOCAL_ROTATE, TM_FLY_Z, TM_FLY_PAN
37 };
38
39 enum NavMode {
40 NavTurnAround,
41 NavFly
42 };
43
44 enum LerpMode {
45 LerpQuaternion,
46 LerpEulerAngles
47 };
48
49 enum RotationMode {
50 RotationStable,
51 RotationStandard
52 };
53
54 Camera mCamera;
55 TrackMode mCurrentTrackingMode;
56 NavMode mNavMode;
57 LerpMode mLerpMode;
58 RotationMode mRotationMode;
59 Vector2i mMouseCoords;
60 Trackball mTrackball;
61
62 QTimer m_timer;
63
64 void setupCamera();
65
66 std::vector<Vector3f> mVertices;
67 std::vector<Vector3f> mNormals;
68 std::vector<int> mIndices;
69
70 protected slots:
71
72 virtual void animate(void);
73 virtual void drawScene(void);
74
75 virtual void grabFrame(void);
76 virtual void stopAnimation();
77
78 virtual void setNavMode(int);
79 virtual void setLerpMode(int);
80 virtual void setRotationMode(int);
81 virtual void resetCamera();
82
83 protected:
84
85 virtual void initializeGL();
86 virtual void resizeGL(int width, int height);
87 virtual void paintGL();
88
89 //--------------------------------------------------------------------------------
90 virtual void mousePressEvent(QMouseEvent * e);
91 virtual void mouseReleaseEvent(QMouseEvent * e);
92 virtual void mouseMoveEvent(QMouseEvent * e);
93 virtual void keyPressEvent(QKeyEvent * e);
94 //--------------------------------------------------------------------------------
95
96 public:
98
101
103};
104
105class QuaternionDemo : public QMainWindow
106{
107 Q_OBJECT
108 public:
110 protected:
112};
113
114#endif // EIGEN_QUATERNION_DEMO_H
Array< double, 1, 3 > e(1./3., 0.5, 2.)
#define EIGEN_MAKE_ALIGNED_OPERATOR_NEW
Definition Memory.h:841
Definition camera.h:37
Definition camera.h:18
Definition quaternion_demo.h:106
QuaternionDemo()
Definition quaternion_demo.cpp:624
RenderingWidget * mRenderingWidget
Definition quaternion_demo.h:111
Definition quaternion_demo.h:23
virtual void stopAnimation()
Definition quaternion_demo.cpp:355
virtual void resizeGL(int width, int height)
Definition quaternion_demo.cpp:490
virtual void initializeGL()
Definition quaternion_demo.cpp:477
~RenderingWidget()
Definition quaternion_demo.h:100
QWidget * createNavigationControlWidget()
Definition quaternion_demo.cpp:551
virtual void animate(void)
Definition quaternion_demo.cpp:269
virtual void setRotationMode(int)
Definition quaternion_demo.cpp:505
virtual void resetCamera()
Definition quaternion_demo.cpp:510
virtual void mousePressEvent(QMouseEvent *e)
Definition quaternion_demo.cpp:363
virtual void setNavMode(int)
Definition quaternion_demo.cpp:495
virtual void drawScene(void)
Definition quaternion_demo.cpp:228
virtual void mouseMoveEvent(QMouseEvent *e)
Definition quaternion_demo.cpp:401
virtual void setLerpMode(int)
Definition quaternion_demo.cpp:500
virtual void paintGL()
Definition quaternion_demo.cpp:457
virtual void grabFrame(void)
Definition quaternion_demo.cpp:210
EIGEN_MAKE_ALIGNED_OPERATOR_NEW RenderingWidget()
Definition quaternion_demo.cpp:197
virtual void keyPressEvent(QKeyEvent *e)
Definition quaternion_demo.cpp:312
virtual void mouseReleaseEvent(QMouseEvent *e)
Definition quaternion_demo.cpp:395
Definition trackball.h:18