ProjectedTextures
Prototype software for spacial augmented reality applications.
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
Similarity.h
Go to the documentation of this file.
1 #pragma once
2 
3 #define _USE_MATH_DEFINES
4 
5 #include <QMatrix4x4>
6 #include <QVector3D>
7 #include <QQuaternion>
8 #include <math.h>
9 
10 
15 {
16 
17 public:
18  Similarity();
19  Similarity(QVector3D translation, QQuaternion rotation, float scale=1.0f);
21  Similarity(QMatrix4x4 rigidTransformation);
25  ~Similarity();
26 
27  //getters
28  QVector3D translation(){return _translation;}
29  QQuaternion rotation(){return _rotation;}
30  QVector3D rotationEuler();
31  float scale(){return _scale;}
32  virtual QMatrix4x4 matrix();
34  //setters
35  void setTranslation(QVector3D translation){_translation=translation;}
36  void setRotation(QQuaternion rotation){_rotation=rotation;}
37  void setRotation(float x, float y, float z);
38  void setScale(float scale){_scale=scale;}
40  //static
41  static QVector3D distance(Similarity a, Similarity b);
43  static Similarity interpolate(Similarity a, Similarity b, float t);
48  static Similarity interpolate(Similarity a, Similarity b, float tTrans, float tRot, float tScale=0.5f);
49 
52  static Similarity bezier(QList<Similarity> controlPoints, float t);
53 
57  static Similarity responsiveBezier(QList<Similarity> controlPoints, float maxTranslation, float maxRotation);
58 
59  //operators
62 protected:
63  QVector3D _translation;
64  QQuaternion _rotation;
65  float _scale;
69  static QList<Similarity> bezierRecursion(QList<Similarity> input, float t);
71  static QList<Similarity> responsiveBezierRecursion(QList<Similarity> input, float maxTranslation, float maxRotation);
74 };
75