-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcamera3d.h
More file actions
55 lines (39 loc) · 1.27 KB
/
camera3d.h
File metadata and controls
55 lines (39 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef CAMERA3D_H
#define CAMERA3D_H
#include <QVector>
#include <QQuaternion>
#include <QVector3D>
#include <QMatrix4x4>
#include "transformational.h"
class Camera3D : public Transformational
{
public:
// Transformational interface
public:
void rotate(const QQuaternion &rotation) override;
void translate(const QVector3D &translation) override;
void scale(const float scaleKoef) override;
void setGlobalTransform(const QMatrix4x4 &matrix) override;
void draw(class QOpenGLShaderProgram *program, class QOpenGLFunctions *functions = nullptr) override;
void objectPicking(QOpenGLShaderProgram *programm, QOpenGLFunctions *functions) override {}
// End Transformational interface
static Camera3D& Instance();
QQuaternion getRotation() const;
QVector3D getPosition() const;
QVector3D getDirection() const;
void setDirection(QVector3D direction);
QMatrix4x4 getViewMatrix() const;
void lookAt();
private:
Camera3D();
Camera3D(const Camera3D&) = delete;
Camera3D& operator=(const Camera3D&) = delete;
QQuaternion m_rotate;
QVector3D m_translate;
float m_scale;
QMatrix4x4 m_globalTransform;
QVector3D m_direction;
QMatrix4x4 m_viewMatrix;
void m_resetViewMatrix();
};
#endif // CAMERA3D_H