#include <vmath.h>
Public Member Functions | |
Quaternion () | |
Quaternion constructor, sets quaternion to (0 + 0i + 0j + 0k). | |
Quaternion (const Quaternion< T > &q) | |
Copy constructor. | |
template<class FromT > | |
Quaternion (const Quaternion< FromT > &q) | |
Copy casting constructor. | |
Quaternion (T w_, const Vector3< T > &v_) | |
Creates quaternion object from real part w_ and complex part v_. | |
Quaternion (T w_, T x, T y, T z) | |
Creates quaternion object from value (w_ + xi + yj + zk). | |
Quaternion< T > & | operator= (const Quaternion< T > &rhs) |
Copy operator. | |
template<class FromT > | |
Quaternion< T > & | operator= (const Quaternion< FromT > &rhs) |
Copy convert operator. | |
Quaternion< T > | operator+ (const Quaternion< T > &rhs) const |
Addition operator. | |
Quaternion< T > | operator* (const Quaternion< T > &rhs) const |
Multiplication operator. | |
Quaternion< T > | operator* (T rhs) const |
Multiplication operator. | |
Quaternion< T > | operator- (const Quaternion< T > &rhs) const |
Substraction operator. | |
Quaternion< T > & | operator+= (const Quaternion< T > &rhs) |
Addition operator. | |
Quaternion< T > & | operator-= (const Quaternion< T > &rhs) |
Substraction operator. | |
Quaternion< T > & | operator*= (const Quaternion< T > &rhs) |
Multiplication operator. | |
Quaternion< T > & | operator*= (T rhs) |
Multiplication operator. | |
bool | operator== (const Quaternion< T > &rhs) const |
Equality test operator. | |
bool | operator!= (const Quaternion< T > &rhs) const |
Inequality test operator. | |
Quaternion< T > | operator- () const |
Unary negate operator. | |
Quaternion< T > | operator~ () const |
Unary conjugate operator. | |
T | length () const |
Get lenght of quaternion. | |
T | lengthSq () const |
Return square of length. | |
void | normalize () |
Normalize quaternion. | |
Matrix3< T > | rotMatrix () |
Converts quaternion into rotation matrix. | |
Matrix4< T > | transform () |
Converts quaternion into transformation matrix. | |
Quaternion< T > | lerp (T fact, const Quaternion< T > &rhs) const |
Linear interpolation of two quaternions. | |
Quaternion< T > | slerp (T r, const Quaternion< T > &q2) const |
Computes spherical interpolation between quaternions (this, q2) using coeficient of interpolation r (in [0, 1]). | |
Static Public Member Functions | |
static Quaternion< T > | fromEulerAngles (T x, T y, T z) |
Creates quaternion for eulers angles. | |
static Quaternion< T > | fromAxisRot (Vector3< T > axis, float angleDeg) |
Creates quaternion as rotation around axis. | |
static Quaternion< T > | fromMatrix (const Matrix4< T > &m) |
Creates quaternion from transform matrix. | |
static Quaternion< T > | fromMatrix (const Matrix3< T > &m) |
Creates quaternion from rotation matrix. | |
Public Attributes | |
T | w |
Real part of quaternion. | |
Vector3< T > | v |
Complex part of quaternion. | |
Friends | |
std::ostream & | operator<< (std::ostream &oss, const Quaternion< T > &q) |
Provides output to standard output stream. |
Quaternion is kind of complex number it consists of its real part (w) and its complex part v. This complex part has three elements, so we can express it as xi + yj + zk . Note that coordinates of (x,y,z) are hold inside v field.
Quaternion< T >::Quaternion | ( | ) | [inline] |
Quaternion constructor, sets quaternion to (0 + 0i + 0j + 0k).
Quaternion< T >::Quaternion | ( | const Quaternion< T > & | q | ) | [inline] |
Copy constructor.
Quaternion< T >::Quaternion | ( | const Quaternion< FromT > & | q | ) | [inline] |
Copy casting constructor.
Quaternion< T >::Quaternion | ( | T | w_, | |
const Vector3< T > & | v_ | |||
) | [inline] |
Creates quaternion object from real part w_ and complex part v_.
w_ | Real part of quaternion. | |
v_ | Complex part of quaternion (xi + yj + zk). |
Quaternion< T >::Quaternion | ( | T | w_, | |
T | x, | |||
T | y, | |||
T | z | |||
) | [inline] |
Creates quaternion object from value (w_ + xi + yj + zk).
w_ | Real part of quaternion. | |
x | Complex cooeficinet for i complex constant. | |
y | Complex cooeficinet for j complex constant. | |
z | Complex cooeficinet for k complex constant. |
static Quaternion<T> Quaternion< T >::fromAxisRot | ( | Vector3< T > | axis, | |
float | angleDeg | |||
) | [inline, static] |
Creates quaternion as rotation around axis.
axis | Unit vector expressing axis of rotation. | |
angleDeg | Angle of rotation around axis (in degrees). |
References DEG2RAD.
static Quaternion<T> Quaternion< T >::fromEulerAngles | ( | T | x, | |
T | y, | |||
T | z | |||
) | [inline, static] |
Creates quaternion for eulers angles.
x | Rotation around x axis (in degrees). | |
y | Rotation around y axis (in degrees). | |
z | Rotation around z axis (in degrees). |
static Quaternion<T> Quaternion< T >::fromMatrix | ( | const Matrix3< T > & | m | ) | [inline, static] |
Creates quaternion from rotation matrix.
m | Rotation matrix used to compute quaternion. |
References Matrix3< T >::at(), epsilon, Quaternion< T >::v, and Quaternion< T >::w.
static Quaternion<T> Quaternion< T >::fromMatrix | ( | const Matrix4< T > & | m | ) | [inline, static] |
Creates quaternion from transform matrix.
m | Transfrom matrix used to compute quaternion. |
References Matrix4< T >::at(), epsilon, Quaternion< T >::v, and Quaternion< T >::w.
T Quaternion< T >::length | ( | ) | const [inline] |
Get lenght of quaternion.
T Quaternion< T >::lengthSq | ( | ) | const [inline] |
Quaternion<T> Quaternion< T >::lerp | ( | T | fact, | |
const Quaternion< T > & | rhs | |||
) | const [inline] |
Linear interpolation of two quaternions.
fact | Factor of interpolation. For translation from positon of this vector to quaternion rhs, values of factor goes from 0.0 to 1.0. | |
rhs | Second Quaternion for interpolation |
References Quaternion< T >::v, and Quaternion< T >::w.
void Quaternion< T >::normalize | ( | ) | [inline] |
Normalize quaternion.
bool Quaternion< T >::operator!= | ( | const Quaternion< T > & | rhs | ) | const [inline] |
Inequality test operator.
rhs | Right hand side argument of binary operator. |
Quaternion<T> Quaternion< T >::operator* | ( | T | rhs | ) | const [inline] |
Multiplication operator.
rhs | Right hand side argument of binary operator. |
Quaternion<T> Quaternion< T >::operator* | ( | const Quaternion< T > & | rhs | ) | const [inline] |
Multiplication operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T>& Quaternion< T >::operator*= | ( | T | rhs | ) | [inline] |
Multiplication operator.
rhs | Right hand side argument of binary operator. |
Quaternion<T>& Quaternion< T >::operator*= | ( | const Quaternion< T > & | rhs | ) | [inline] |
Multiplication operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T> Quaternion< T >::operator+ | ( | const Quaternion< T > & | rhs | ) | const [inline] |
Addition operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T>& Quaternion< T >::operator+= | ( | const Quaternion< T > & | rhs | ) | [inline] |
Addition operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T> Quaternion< T >::operator- | ( | ) | const [inline] |
Unary negate operator.
Quaternion<T> Quaternion< T >::operator- | ( | const Quaternion< T > & | rhs | ) | const [inline] |
Substraction operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T>& Quaternion< T >::operator-= | ( | const Quaternion< T > & | rhs | ) | [inline] |
Substraction operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T>& Quaternion< T >::operator= | ( | const Quaternion< FromT > & | rhs | ) | [inline] |
Copy convert operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T>& Quaternion< T >::operator= | ( | const Quaternion< T > & | rhs | ) | [inline] |
Copy operator.
rhs | Right hand side argument of binary operator. |
References Quaternion< T >::v, and Quaternion< T >::w.
bool Quaternion< T >::operator== | ( | const Quaternion< T > & | rhs | ) | const [inline] |
Equality test operator.
rhs | Right hand side argument of binary operator. |
References EPSILON, Quaternion< T >::v, and Quaternion< T >::w.
Quaternion<T> Quaternion< T >::operator~ | ( | ) | const [inline] |
Unary conjugate operator.
Matrix3<T> Quaternion< T >::rotMatrix | ( | ) | [inline] |
Converts quaternion into rotation matrix.
References Matrix3< T >::at().
Quaternion<T> Quaternion< T >::slerp | ( | T | r, | |
const Quaternion< T > & | q2 | |||
) | const [inline] |
Computes spherical interpolation between quaternions (this, q2) using coeficient of interpolation r (in [0, 1]).
r | The ratio of interpolation form this (r = 0) to q2 (r = 1). | |
q2 | Second quaternion for interpolation. |
References epsilon, Quaternion< T >::v, and Quaternion< T >::w.
Matrix4<T> Quaternion< T >::transform | ( | ) | [inline] |
Converts quaternion into transformation matrix.
References Matrix4< T >::at().
std::ostream& operator<< | ( | std::ostream & | oss, | |
const Quaternion< T > & | q | |||
) | [friend] |
Provides output to standard output stream.
Vector3<T> Quaternion< T >::v |
Complex part of quaternion.
Referenced by Quaternion< T >::fromMatrix(), Quaternion< T >::lerp(), Quaternion< T >::operator*(), Quaternion< T >::operator*=(), Quaternion< T >::operator+(), Quaternion< T >::operator+=(), Quaternion< T >::operator-(), Quaternion< T >::operator-=(), Quaternion< T >::operator=(), Quaternion< T >::operator==(), and Quaternion< T >::slerp().
T Quaternion< T >::w |
Real part of quaternion.
Referenced by Quaternion< T >::fromMatrix(), Quaternion< T >::lerp(), Quaternion< T >::operator*(), Quaternion< T >::operator*=(), Quaternion< T >::operator+(), Quaternion< T >::operator+=(), Quaternion< T >::operator-(), Quaternion< T >::operator-=(), Quaternion< T >::operator=(), Quaternion< T >::operator==(), and Quaternion< T >::slerp().