Flair
Framework Libre Air
Quaternion.h
Go to the documentation of this file.
1 // %flair:license{
2 // This file is part of the Flair framework distributed under the
3 // CECILL-C License, Version 1.0.
4 // %flair:license}
12 #ifndef QUATERNION_H
13 #define QUATERNION_H
14 
15 namespace flair {
16 namespace core {
17 class Euler;
18 class Vector3D;
19 class RotationMatrix;
20 
25 class Quaternion {
26 public:
37  Quaternion(float q0 = 1, float q1 = 0, float q2 = 0, float q3 = 0);
38 
43  ~Quaternion();
44 
50  float GetNorm(void) const;
51 
55  void Normalize(void);
56 
64  void GetLogarithm(Vector3D &logarithm);
65 
73  Vector3D GetLogarithm(void);
74 
78  void Conjugate(void);
79 
86 
94  Quaternion GetDerivative(const Vector3D &angularSpeed) const;
95 
101  void Derivate(const Vector3D &angularSpeed);
102 
108  void ToEuler(Euler &euler) const;
109 
115  Euler ToEuler(void) const;
116 
122  void ToRotationMatrix(RotationMatrix &matrix) const;
123 
127  float q0;
128 
132  float q1;
133 
137  float q2;
138 
142  float q3;
143 
144  Quaternion &operator+=(const Quaternion &quaternion);
145  Quaternion &operator-=(const Quaternion &quaternion);
146  Quaternion &operator=(const Quaternion &quaternion);
147 };
148 
158 Quaternion operator+(Quaternion const &quaterniontA,
159  Quaternion const &quaterniontB);
160 
170 Quaternion operator-(Quaternion const &quaternionA,
171  Quaternion const &quaterniontB);
172 
181 Quaternion operator-(const Quaternion &quaternion);
182 
192 Quaternion operator*(Quaternion const &quaternionA,
193  Quaternion const &quaterniontB);
194 
204 Quaternion operator*(float coeff, Quaternion const &quaternion);
205 
215 Quaternion operator*(Quaternion const &quaternion, float coeff);
216 
217 } // end namespace core
218 } // end namespace flair
219 
220 #endif // QUATERNION_H
float GetNorm(void) const
Norm.
Quaternion(float q0=1, float q1=0, float q2=0, float q3=0)
Constructor.
namespace of the flair Framework
Definition: Ahrs.h:19
void Normalize(void)
Normalize.
void Conjugate(void)
Conjugate.
Class defining a 3D vector.
Definition: Vector3D.h:28
Class defining euler angles.
Definition: Euler.h:27
float q1
q1
Definition: Quaternion.h:132
void Derivate(const Vector3D &angularSpeed)
Derivate.
Class defining a rotation matrix.
Definition: RotationMatrix.h:26
Vector3D GetLogarithm(void)
Logarithm.
void ToRotationMatrix(RotationMatrix &matrix) const
Convert to rotation matrix.
Quaternion GetDerivative(const Vector3D &angularSpeed) const
Derivative.
Quaternion GetConjugate(void)
Conjugate.
float q2
q2
Definition: Quaternion.h:137
~Quaternion()
Destructor.
Quaternion operator*(Quaternion const &quaternionA, Quaternion const &quaterniontB)
Multiply.
float q0
q0
Definition: Quaternion.h:127
Quaternion operator-(Quaternion const &quaternionA, Quaternion const &quaterniontB)
Substract.
float q3
q3
Definition: Quaternion.h:142
Euler ToEuler(void) const
Convert to euler angles.
Quaternion operator+(Quaternion const &quaterniontA, Quaternion const &quaterniontB)
Add.
Class defining a quaternion.
Definition: Quaternion.h:25