source: flair-src/trunk/lib/FlairCore/src/Quaternion.h@ 307

Last change on this file since 307 was 167, checked in by Sanahuja Guillaume, 7 years ago

modifs pour template vectors

File size: 3.6 KB
RevLine 
[2]1// %flair:license{
[15]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[2]4// %flair:license}
5/*!
6 * \file Quaternion.h
7 * \brief Class defining a quaternion
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2016/02/03
10 * \version 4.0
11 */
12#ifndef QUATERNION_H
13#define QUATERNION_H
14
[167]15#include <Vector3D.h>
16
[15]17namespace flair {
18namespace core {
19class Euler;
20class RotationMatrix;
[2]21
[15]22/*! \class Quaternion
23*
24* \brief Class defining a quaternion
25*/
26class Quaternion {
27public:
28 /*!
29 * \brief Constructor
30 *
31 * Construct a quaternion using specified values.
32 *
33 * \param q0, scalar part
34 * \param q1
35 * \param q2
36 * \param q3
37 */
38 Quaternion(float q0 = 1, float q1 = 0, float q2 = 0, float q3 = 0);
[2]39
[15]40 /*!
41 * \brief Destructor
42 *
43 */
44 ~Quaternion();
[2]45
[15]46 /*!
47 * \brief Norm
48 *
49 * \return norm
50 */
51 float GetNorm(void) const;
[2]52
[15]53 /*!
54 * \brief Normalize
55 */
56 void Normalize(void);
[2]57
[15]58 /*!
59 * \brief Logarithm
60 *
61 * This method also Normalize the quaternion.
62 *
63 * \param logarithm output logarithm
64 */
[167]65 void GetLogarithm(Vector3Df &logarithm);
[2]66
[15]67 /*!
68 * \brief Logarithm
69 *
70 * This method also Normalize the quaternion.
71 *
72 * \return output logarithm
73 */
[167]74 Vector3Df GetLogarithm(void);
[2]75
[15]76 /*!
77 * \brief Conjugate
78 */
79 void Conjugate(void);
[2]80
[15]81 /*!
82 * \brief Conjugate
83 *
84 * \return Conjugate
85 */
86 Quaternion GetConjugate(void);
[2]87
[15]88 /*!
89 * \brief Derivative
90 *
91 * \param w angular speed
92 *
93 * \return derivative
94 */
[167]95 Quaternion GetDerivative(const Vector3Df &angularSpeed) const;
[2]96
[15]97 /*!
98 * \brief Derivate
99 *
100 * \param w rotationonal speed
101 */
[167]102 void Derivate(const Vector3Df &angularSpeed);
[2]103
[15]104 /*!
105 * \brief Convert to euler angles
106 *
107 * \param euler output euler angles
108 */
109 void ToEuler(Euler &euler) const;
[2]110
[15]111 /*!
112 * \brief Convert to euler angles
113 *
114 * \return euler angles
115 */
116 Euler ToEuler(void) const;
[2]117
[15]118 /*!
119 * \brief Convert to rotation matrix
120 *
121 * \param m output matrix
122 */
123 void ToRotationMatrix(RotationMatrix &matrix) const;
[2]124
[15]125 /*!
126 * \brief q0
127 */
128 float q0;
[2]129
[15]130 /*!
131 * \brief q1
132 */
133 float q1;
[2]134
[15]135 /*!
136 * \brief q2
137 */
138 float q2;
[2]139
[15]140 /*!
141 * \brief q3
142 */
143 float q3;
[2]144
[15]145 Quaternion &operator+=(const Quaternion &quaternion);
146 Quaternion &operator-=(const Quaternion &quaternion);
147 Quaternion &operator=(const Quaternion &quaternion);
148};
[2]149
[15]150/*! Add
151*
152* \brief Add
153*
154* \param quaterniontA quaternion
155* \param quaterniontB quaternion
156*
157* \return quaterniontA+quaterniontB
158*/
159Quaternion operator+(Quaternion const &quaterniontA,
160 Quaternion const &quaterniontB);
[2]161
[15]162/*! Substract
163*
164* \brief Substract
165*
166* \param quaterniontA quaternion
167* \param quaterniontB quaternion
168*
169* \return quaterniontA-quaterniontB
170*/
171Quaternion operator-(Quaternion const &quaternionA,
172 Quaternion const &quaterniontB);
[2]173
[15]174/*! Minus
175*
176* \brief Minus
177*
178* \param quaternion quaternion
179*
180* \return -quaternion
181*/
182Quaternion operator-(const Quaternion &quaternion);
[2]183
[15]184/*! Multiply
185*
186* \brief Multiply
187*
188* \param quaterniontA quaternion
189* \param quaterniontB quaternion
190*
191* \return quaterniontA*quaterniontB
192*/
193Quaternion operator*(Quaternion const &quaternionA,
194 Quaternion const &quaterniontB);
[2]195
[15]196/*! Multiply
197*
198* \brief Multiply
199*
200* \param coeff coefficient
201* \param quat quaternion
202*
203* \return coeff*quat
204*/
205Quaternion operator*(float coeff, Quaternion const &quaternion);
[2]206
[15]207/*! Multiply
208*
209* \brief Multiply
210*
211* \param quat quaternion
212* \param coeff coefficient
213*
214* \return coeff*quat
215*/
216Quaternion operator*(Quaternion const &quaternion, float coeff);
[2]217
218} // end namespace core
219} // end namespace flair
220
221#endif // QUATERNION_H
Note: See TracBrowser for help on using the repository browser.