Quaternion. More...
#include <quaternion.h>
| Public Member Functions | |
| Quaternionx () | |
| Quaternionx (const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order) | |
| Quaternionx (const Mat4< Type > &rotation_matrix) | |
| Quaternionx (const Quaternionx< Type > ©) | |
| Quaternionx (const Vec3< Type > &euler, AngleUnit unit, EulerOrder order) | |
| Quaternionx (Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order) | |
| Quaternionx (Type real, const Vec3< Type > &imag) | |
| Quaternionx (Type real, Type i, Type j, Type k) | |
| Quaternionx< Type > & | inverse () | 
| Inverse this quaternion. | |
| Type | magnitude () const | 
| Get the quaternion magnitude. | |
| Quaternionx< Type > & | normalize () | 
| Normalizes this quaternion. | |
| bool | operator!= (const Quaternionx< Type > &other) const | 
| Not equal operator. | |
| Quaternionx< Type > | operator* (const Mat4< Type > &matrix) const | 
| Quaternionx< Type > | operator* (const Quaternionx< Type > &mult) const | 
| Multiplication operator. | |
| bool | operator< (const Quaternionx< Type > &other) const | 
| Less operator. | |
| bool | operator<= (const Quaternionx< Type > &other) const | 
| Less equal operator. | |
| bool | operator== (const Quaternionx< Type > &other) const | 
| Equal operator. | |
| bool | operator> (const Quaternionx< Type > &other) const | 
| Greater operator. | |
| bool | operator>= (const Quaternionx< Type > &other) const | 
| Greater equal operator. | |
| 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. | |
| Vec4< Type > | rotate_vector (const Vec4< Type > &v) const | 
| void | set (const Angle &euler_x, const Angle &euler_y, const Angle &euler_z, EulerOrder order) | 
| void | set (const Vec3< Type > &euler, AngleUnit unit, EulerOrder order) | 
| void | set (Type euler_x, Type euler_y, Type euler_z, AngleUnit unit, EulerOrder order) | 
| Mat4< Type > | to_matrix () const | 
| Convert the quaternion to a rotation matrix. | |
| 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. | |
| static Quaternionx< Type > | lerp (const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type lerp_time) | 
| Linear Quaternion Interpolation. | |
| static Quaternionx< Type > | multiply (const Quaternionx< Type > &quaternion_1, const Quaternionx< Type > &quaternion_2) | 
| static Quaternionx< Type > | normalize (Quaternionx< Type > q) | 
| Normalizes this quaternion. | |
| static Quaternionx< Type > | rotation_between (Vec3< Type > v0, Vec3< Type > v1) | 
| Calculates the shortest arc quaternion between two vectors. | |
| static Quaternionx< Type > | rotation_between (Vec4< Type > v0, Vec4< Type > v1) | 
| Calculates the shortest arc quaternion between two vectors. | |
| static Quaternionx< Type > | slerp (const Quaternionx< Type > &quaternion_initial, const Quaternionx< Type > &quaternion_final, Type slerp_time) | 
| Spherical Quaternion Interpolation. | |
| Public Attributes | ||
| union { | ||
| Type i | ||
| Type x | ||
| }; | ||
| The imaginary vector part. | ||
| union { | ||
| Type j | ||
| Type y | ||
| }; | ||
| union { | ||
| Type k | ||
| Type z | ||
| }; | ||
| Type | w | |
| The real scalar part. | ||
Quaternion.
These quaternion templates are defined for: float (Quaternionf), double (Quaterniond)
| 
 | inline | 
| 
 | inlineexplicit | 
| 
 | inlineexplicit | 
| 
 | inline | 
| 
 | explicit | 
| 
 | explicit | 
| 
 | explicit | 
| 
 | explicit | 
| 
 | static | 
| Quaternionx< Type > & clan::Quaternionx< Type >::inverse | ( | ) | 
Inverse this quaternion.
This is the same as the conjugate of a quaternion
| 
 | inlinestatic | 
Inverse this quaternion.
This is the same as the conjugate of a quaternion
References clan::q.
| 
 | static | 
Linear Quaternion Interpolation.
| quaternion_initial | = Source quaternion | 
| quaternion_final | = Destination quaternion | 
| lerp_time | = Time in the range of 0.0 to 1.0 | 
| Type clan::Quaternionx< Type >::magnitude | ( | ) | const | 
Get the quaternion magnitude.
| 
 | static | 
Referenced by clan::Quaternionx< Type >::operator*().
| Quaternionx< Type > & clan::Quaternionx< Type >::normalize | ( | ) | 
Normalizes this quaternion.
| 
 | inlinestatic | 
| 
 | inline | 
Not equal operator.
References clan::Quaternionx< Type >::w, clan::Quaternionx< Type >::x, clan::Quaternionx< Type >::y, and clan::Quaternionx< Type >::z.
| Quaternionx< Type > clan::Quaternionx< Type >::operator* | ( | const Mat4< Type > & | matrix | ) | const | 
| 
 | inline | 
Multiplication operator.
References clan::Quaternionx< Type >::multiply().
| 
 | inline | 
Less operator.
References clan::Quaternionx< Type >::w, clan::Quaternionx< Type >::x, clan::Quaternionx< Type >::y, and clan::Quaternionx< Type >::z.
| 
 | inline | 
Less equal operator.
| 
 | inline | 
Equal operator.
References clan::Quaternionx< Type >::w, clan::Quaternionx< Type >::x, clan::Quaternionx< Type >::y, and clan::Quaternionx< Type >::z.
| 
 | inline | 
Greater operator.
References clan::Quaternionx< Type >::w, clan::Quaternionx< Type >::x, clan::Quaternionx< Type >::y, and clan::Quaternionx< Type >::z.
| 
 | inline | 
Greater equal operator.
| Quaternionx< Type > & clan::Quaternionx< Type >::rotate | ( | const Angle & | angle, | 
| const Vec3f & | axis ) | 
| Quaternionx< Type > & clan::Quaternionx< Type >::rotate | ( | const Angle & | euler_x, | 
| const Angle & | euler_y, | ||
| const Angle & | euler_z, | ||
| EulerOrder | order ) | 
| Vec3< Type > clan::Quaternionx< Type >::rotate_vector | ( | const Vec3< Type > & | v | ) | const | 
Rotates vector by this quaternion.
| v | = Vertex to rotate | 
| Vec4< Type > clan::Quaternionx< Type >::rotate_vector | ( | const Vec4< Type > & | v | ) | const | 
| 
 | static | 
Calculates the shortest arc quaternion between two vectors.
| 
 | static | 
Calculates the shortest arc quaternion between two vectors.
| void clan::Quaternionx< Type >::set | ( | const Angle & | euler_x, | 
| const Angle & | euler_y, | ||
| const Angle & | euler_z, | ||
| EulerOrder | order ) | 
| void clan::Quaternionx< Type >::set | ( | const Vec3< Type > & | euler, | 
| AngleUnit | unit, | ||
| EulerOrder | order ) | 
| void clan::Quaternionx< Type >::set | ( | Type | euler_x, | 
| Type | euler_y, | ||
| Type | euler_z, | ||
| AngleUnit | unit, | ||
| EulerOrder | order ) | 
| 
 | static | 
Spherical Quaternion Interpolation.
| quaternion_initial | = Source quaternion | 
| quaternion_final | = Destination quaternion | 
| slerp_time | = Time in the range of 0.0 to 1.0 | 
| Mat4< Type > clan::Quaternionx< Type >::to_matrix | ( | ) | const | 
Convert the quaternion to a rotation matrix.
This function assumes that the quarternion is normalized.
| union { ... } clan::Quaternionx< Type > | 
The imaginary vector part.
| union { ... } clan::Quaternionx< Type > | 
| union { ... } clan::Quaternionx< Type > | 
| Type clan::Quaternionx< Type >::i | 
| Type clan::Quaternionx< Type >::j | 
| Type clan::Quaternionx< Type >::k | 
| Type clan::Quaternionx< Type >::w | 
The real scalar part.
Referenced by clan::Quaternionx< Type >::operator!=(), clan::Quaternionx< Type >::operator<(), clan::Quaternionx< Type >::operator==(), and clan::Quaternionx< Type >::operator>().
| Type clan::Quaternionx< Type >::x | 
| Type clan::Quaternionx< Type >::y | 
| Type clan::Quaternionx< Type >::z |