/home/damien/work/2012_2013_teaching/2012_5eti_synthese/lib3d/quaternion.hpp
Go to the documentation of this file.
1 
2 #ifndef QUATERNION_HPP
3 #define QUATERNION_HPP
4 
5 #include <v4.hpp>
6 
7 namespace cpe
8 {
9 class matrix3;
10 
12 class quaternion : public v4
13 {
14 public:
15  // ********************************************* //
16  // ********************************************* //
17  // CONSTRUCTORS
18  // ********************************************* //
19  // ********************************************* //
20 
22  quaternion();
24  quaternion(const v3& axis,const double& angle);
26  quaternion(const v4& v);
28  quaternion(const double& x,const double& y,const double& z,const double& w);
29 
30 
31  // ********************************************* //
32  // ********************************************* //
33  // GET
34  // ********************************************* //
35  // ********************************************* //
36 
38  v3 axis() const;
40  double angle() const;
41 
42  // ********************************************* //
43  // ********************************************* //
44  // Math
45  // ********************************************* //
46  // ********************************************* //
47 
51  matrix3 matrix() const;
52 
54  quaternion conjugated() const;
55 
61  static quaternion slerp(const quaternion& q0,const quaternion& q1,const double alpha);
62 
64  v3 rotate(const v3& vec) const;
65 
66 
67  // ********************************************* //
68  // ********************************************* //
69  // Operators
70  // ********************************************* //
71  // ********************************************* //
72 
74  quaternion& operator*=(const quaternion& q);
76  quaternion& operator*=(const double& s);
78  quaternion& operator+=(const quaternion& q);
80  quaternion& operator-=(const quaternion& q);
82  quaternion& operator/=(const double& s);
83 
85  quaternion operator*(const quaternion& q) const;
87  quaternion operator*(const v3& v) const;
89  quaternion operator*(const double& s) const;
91  quaternion operator+(const quaternion& q) const;
93  quaternion operator-(const quaternion& q) const;
95  quaternion operator/(const double& s) const;
96 
98  quaternion operator-() const;
99 
100 
101 
102 
103 
104 
105 private:
106 
107 };
108 
110 quaternion operator*(const double& s,const quaternion& q);
111 
112 
115 {
116 public:
117 
121  exception_quaternion(const std::string& msg,const std::string& file,const std::string& caller,const int& line):exception_v4(msg,file,caller,line){}
122 };
123 
124 
125 }
126 
127 #endif