Quaternion. More...

#include <mat4.h>

Public Member Functions

 Quaternionx ()
 
 Quaternionx (Type real, Type i, Type j, Type k)
 
 Quaternionx (Type real, const Vec3< Type > &imag)
 
 Quaternionx (const Quaternionx< Type > &copy)
 
 Quaternionx (Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order)
 
 Quaternionx (const Vec3< Type > &euler, AngleUnit unit, EulerOrder order)
 
 Quaternionx (const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
 
 Quaternionx (const Mat4< Type > &rotation_matrix)
 
Quaternionx< Type > & inverse ()
 Inverse this quaternion. More...
 
Type magnitude () const
 Get the quaternion magnitude. More...
 
Quaternionx< Type > & normalize ()
 Normalizes this quaternion. More...
 
bool operator!= (const Quaternionx< Type > &other) const
 Not equal operator. More...
 
Quaternionx< Type > operator* (const Quaternionx< Type > &mult) const
 Multiplication operator. More...
 
Quaternionx< Type > operator* (const Mat4< Type > &matrix) const
 
bool operator< (const Quaternionx< Type > &other) const
 Less operator. More...
 
bool operator<= (const Quaternionx< Type > &other) const
 Less equal operator. More...
 
bool operator== (const Quaternionx< Type > &other) const
 Equal operator. More...
 
bool operator> (const Quaternionx< Type > &other) const
 Greater operator. More...
 
bool operator>= (const Quaternionx< Type > &other) const
 Greater equal operator. More...
 
Quaternionx< Type > & rotate (const Angle &angle, const Vec3f &axis)
 
Quaternionx< Type > & rotate (const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
 
Vec3< Type > rotate_vector (const Vec3< Type > &v) const
 Rotates vector by this quaternion. More...
 
Vec4< Type > rotate_vector (const Vec4< Type > &v) const
 
void set (Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order)
 
void set (const Vec3< Type > &euler, AngleUnit unit, EulerOrder order)
 
void set (const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order)
 
Mat4< Type > to_matrix () const
 Convert the quaternion to a rotation matrix. More...
 

Static Public Member Functions

static Quaternionx< Type > axis_angle (const Angle &angle, const Vec3f &axis)
 
static Quaternionx< Type > inverse (Quaternionx< Type > q)
 Inverse this quaternion. More...
 
static Quaternionx< Type > lerp (const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type lerp_time)
 Linear Quaternion Interpolation. More...
 
static Quaternionx< Type > multiply (const Quaternionx< Type > &quaternion_1, const Quaternionx< Type > &quaternion_2)
 
static Quaternionx< Type > normalize (Quaternionx< Type > q)
 Normalizes this quaternion. More...
 
static Quaternionx< Type > rotation_between (Vec3< Type > v0, Vec3< Type > v1)
 Calculates the shortest arc quaternion between two vectors. More...
 
static Quaternionx< Type > rotation_between (Vec4< Type > v0, Vec4< Type > v1)
 Calculates the shortest arc quaternion between two vectors. More...
 
static Quaternionx< Type > slerp (const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type slerp_time)
 Spherical Quaternion Interpolation. More...
 

Public Attributes

union {
   Type   i
 
   Type   x
 
}; 
 The imaginary vector part. More...
 
union {
   Type   j
 
   Type   y
 
}; 
 
union {
   Type   k
 
   Type   z
 
}; 
 
Type w
 The real scalar part. More...
 

Detailed Description

template<typename Type>
class clan::Quaternionx< Type >

Quaternion.

These quaternion templates are defined for: float (Quaternionf), double (Quaterniond)

Constructor & Destructor Documentation

template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( )
inline
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( Type  real,
Type  i,
Type  j,
Type  k 
)
inlineexplicit
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( Type  real,
const Vec3< Type > &  imag 
)
inlineexplicit
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( const Quaternionx< Type > &  copy)
inline
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( Type  euler_x,
Type  euler_y,
Type  euler_z,
AngleUnit  unit,
EulerOrder  order 
)
explicit
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( const Vec3< Type > &  euler,
AngleUnit  unit,
EulerOrder  order 
)
explicit
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( const Angle euler_x,
const Angle euler_y,
const Angle euler_z,
EulerOrder  order 
)
explicit
template<typename Type>
clan::Quaternionx< Type >::Quaternionx ( const Mat4< Type > &  rotation_matrix)
explicit

Member Function Documentation

template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::axis_angle ( const Angle angle,
const Vec3f axis 
)
static
template<typename Type>
Quaternionx<Type>& clan::Quaternionx< Type >::inverse ( )

Inverse this quaternion.

This is the same as the conjugate of a quaternion

Returns
reference to this object
template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::inverse ( Quaternionx< Type >  q)
inlinestatic

Inverse this quaternion.

This is the same as the conjugate of a quaternion

Returns
reference to this object
template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::lerp ( const Quaternionx< Type > &  quaternion_initial,
const Quaternionx< Type > &  quaternion_final,
Type  lerp_time 
)
static

Linear Quaternion Interpolation.

Parameters
quaternion_initial= Source quaternion
quaternion_final= Destination quaternion
lerp_time= Time in the range of 0.0 to 1.0
template<typename Type>
Type clan::Quaternionx< Type >::magnitude ( ) const

Get the quaternion magnitude.

template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::multiply ( const Quaternionx< Type > &  quaternion_1,
const Quaternionx< Type > &  quaternion_2 
)
static
template<typename Type>
Quaternionx<Type>& clan::Quaternionx< Type >::normalize ( )

Normalizes this quaternion.

Returns
reference to this object
template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::normalize ( Quaternionx< Type >  q)
inlinestatic

Normalizes this quaternion.

Returns
reference to this object
template<typename Type>
bool clan::Quaternionx< Type >::operator!= ( const Quaternionx< Type > &  other) const
inline

Not equal operator.

template<typename Type>
Quaternionx<Type> clan::Quaternionx< Type >::operator* ( const Quaternionx< Type > &  mult) const
inline

Multiplication operator.

template<typename Type>
Quaternionx<Type> clan::Quaternionx< Type >::operator* ( const Mat4< Type > &  matrix) const
template<typename Type>
bool clan::Quaternionx< Type >::operator< ( const Quaternionx< Type > &  other) const
inline

Less operator.

template<typename Type>
bool clan::Quaternionx< Type >::operator<= ( const Quaternionx< Type > &  other) const
inline

Less equal operator.

template<typename Type>
bool clan::Quaternionx< Type >::operator== ( const Quaternionx< Type > &  other) const
inline

Equal operator.

template<typename Type>
bool clan::Quaternionx< Type >::operator> ( const Quaternionx< Type > &  other) const
inline

Greater operator.

template<typename Type>
bool clan::Quaternionx< Type >::operator>= ( const Quaternionx< Type > &  other) const
inline

Greater equal operator.

template<typename Type>
Quaternionx<Type>& clan::Quaternionx< Type >::rotate ( const Angle angle,
const Vec3f axis 
)
template<typename Type>
Quaternionx<Type>& clan::Quaternionx< Type >::rotate ( const Angle euler_x,
const Angle euler_y,
const Angle euler_z,
EulerOrder  order 
)
template<typename Type>
Vec3<Type> clan::Quaternionx< Type >::rotate_vector ( const Vec3< Type > &  v) const

Rotates vector by this quaternion.

Parameters
v= Vertex to rotate
Returns
rotated vector
template<typename Type>
Vec4<Type> clan::Quaternionx< Type >::rotate_vector ( const Vec4< Type > &  v) const
template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::rotation_between ( Vec3< Type >  v0,
Vec3< Type >  v1 
)
static

Calculates the shortest arc quaternion between two vectors.

template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::rotation_between ( Vec4< Type >  v0,
Vec4< Type >  v1 
)
static

Calculates the shortest arc quaternion between two vectors.

template<typename Type>
void clan::Quaternionx< Type >::set ( Type  euler_x,
Type  euler_y,
Type  euler_z,
AngleUnit  unit,
EulerOrder  order 
)
template<typename Type>
void clan::Quaternionx< Type >::set ( const Vec3< Type > &  euler,
AngleUnit  unit,
EulerOrder  order 
)
template<typename Type>
void clan::Quaternionx< Type >::set ( const Angle euler_x,
const Angle euler_y,
const Angle euler_z,
EulerOrder  order 
)
template<typename Type>
static Quaternionx<Type> clan::Quaternionx< Type >::slerp ( const Quaternionx< Type > &  quaternion_initial,
const Quaternionx< Type > &  quaternion_final,
Type  slerp_time 
)
static

Spherical Quaternion Interpolation.

Parameters
quaternion_initial= Source quaternion
quaternion_final= Destination quaternion
slerp_time= Time in the range of 0.0 to 1.0
template<typename Type>
Mat4<Type> clan::Quaternionx< Type >::to_matrix ( ) const

Convert the quaternion to a rotation matrix.

This function assumes that the quarternion is normalized.

Member Data Documentation

union { ... }

The imaginary vector part.

union { ... }
union { ... }
template<typename Type>
Type clan::Quaternionx< Type >::i
template<typename Type>
Type clan::Quaternionx< Type >::j
template<typename Type>
Type clan::Quaternionx< Type >::k
template<typename Type>
Type clan::Quaternionx< Type >::w

The real scalar part.


The documentation for this class was generated from the following files: