-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTransform.h
More file actions
55 lines (45 loc) · 1.87 KB
/
Transform.h
File metadata and controls
55 lines (45 loc) · 1.87 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 TRANSFORM_H_
#define TRANSFORM_H_
#include <QVector3D>
#include <QQuaternion>
class Transform
{
public:
enum class Space
{
Local,
World
};
Transform(const QVector3D position = QVector3D(0.0f, 0.0f, 0.0f),
QQuaternion rotation = QQuaternion(1.0f, 0.0f, 0.0f, 0.0f),
QVector3D scale = QVector3D(1.0f, 1.0f, 1.0f));
QVector3D position() const;
QQuaternion rotation() const;
QVector3D scale() const;
void setPosition(QVector3D position);
void setPosition(float x, float y, float z);
void setRotation(QQuaternion rotation);
void setRotation(QVector3D axis, float angle);
void setRotation(float xAngle, float yAngle, float zAngle);
void setRotation(QVector3D xyzAngles);
void setScale(QVector3D scale);
void setScale(float x, float y, float z);
void setScale(float scale);
void move(float x, float y, float z);
void move(QVector3D offset);
void scaleBy(float value);
void scaleBy(QVector3D values);
void rotate(QQuaternion rotation, Space space = Space::Local);
void rotate(QVector3D axis, float angle, Space space = Space::Local);
void rotate(float xAngle, float yAngle, float zAngle, Space space = Space::Local);
void lookAt(QVector3D direction, QVector3D upVector = QVector3D(0.0f, 0.0f, 1.0f), bool orthogonalize = true);
void lookAt(float directionX, float directionY, float directionZ, float upVectorX = 0.0f, float upVectorY = 0.0f, float upVectorZ = 1.0f, bool orthogonalize = true);
QVector3D localX() const;
QVector3D localY() const;
QVector3D localZ() const;
private:
QVector3D objectPosition;
QQuaternion objectRotation;
QVector3D objectScale;
};
#endif // TRANSFORM_H_