|
IrrlichtEngine
|
Quaternion class for representing rotations. More...
#include <quaternion.h>
Public Member Functions | |
| f32 | dotProduct (const quaternion &other) const |
| Calculates the dot product. | |
| bool | equals (const quaternion &other, const f32 tolerance=ROUNDING_ERROR_f32) const |
| returns if this quaternion equals the other one, taking floating point rounding errors into account | |
| quaternion & | fromAngleAxis (f32 angle, const vector3df &axis) |
| Create quaternion from rotation angle and rotation axis. | |
| matrix4 | getMatrix () const |
| Creates a matrix from this quaternion. | |
| void | getMatrix (matrix4 &dest, const core::vector3df &translation) const |
| Creates a matrix from this quaternion. | |
| void | getMatrix_transposed (matrix4 &dest) const |
| Creates a matrix from this quaternion. | |
| void | getMatrixCenter (matrix4 &dest, const core::vector3df ¢er, const core::vector3df &translation) const |
| quaternion & | lerp (quaternion q1, quaternion q2, f32 time) |
| Set this quaternion to the result of the linear interpolation between two quaternions. | |
| quaternion & | makeIdentity () |
| Set quaternion to identity. | |
| quaternion & | makeInverse () |
| Inverts this quaternion. | |
| quaternion & | normalize () |
| Normalizes the quaternion. | |
| bool | operator!= (const quaternion &other) const |
| inequality operator | |
| quaternion | operator* (const quaternion &other) const |
| Multiplication operator. | |
| quaternion | operator* (f32 s) const |
| Multiplication operator with scalar. | |
| vector3df | operator* (const vector3df &v) const |
| Multiplication operator. | |
| quaternion & | operator*= (f32 s) |
| Multiplication operator with scalar. | |
| quaternion & | operator*= (const quaternion &other) |
| Multiplication operator. | |
| quaternion | operator+ (const quaternion &other) const |
| Add operator. | |
| quaternion & | operator= (const quaternion &other) |
| Assignment operator. | |
| quaternion & | operator= (const matrix4 &other) |
| Matrix assignment operator. | |
| bool | operator== (const quaternion &other) const |
| Equalilty operator. | |
| quaternion () | |
| Default Constructor. | |
| quaternion (f32 x, f32 y, f32 z, f32 w) | |
| Constructor. | |
| quaternion (f32 x, f32 y, f32 z) | |
| Constructor which converts euler angles (radians) to a quaternion. | |
| quaternion (const vector3df &vec) | |
| Constructor which converts euler angles (radians) to a quaternion. | |
| quaternion (const matrix4 &mat) | |
| Constructor which converts a matrix to a quaternion. | |
| quaternion & | rotationFromTo (const vector3df &from, const vector3df &to) |
| Set quaternion to represent a rotation from one vector to another. | |
| quaternion & | set (f32 x, f32 y, f32 z, f32 w) |
| Sets new quaternion. | |
| quaternion & | set (f32 x, f32 y, f32 z) |
| Sets new quaternion based on euler angles (radians) | |
| quaternion & | set (const core::vector3df &vec) |
| Sets new quaternion based on euler angles (radians) | |
| quaternion & | set (const core::quaternion &quat) |
| Sets new quaternion from other quaternion. | |
| quaternion & | slerp (quaternion q1, quaternion q2, f32 interpolate) |
| Set this quaternion to the result of the spherical interpolation between two quaternions. | |
| void | toAngleAxis (f32 &angle, core::vector3df &axis) const |
| Fills an angle (radians) around an axis (unit vector) | |
| void | toEuler (vector3df &euler) const |
| Output this quaternion to an euler angle (radians) | |
Public Attributes | |
| f32 | W |
| f32 | X |
| Quaternion elements. | |
| f32 | Y |
| f32 | Z |
Quaternion class for representing rotations.
It provides cheap combinations and avoids gimbal locks. Also useful for interpolations.
Definition at line 21 of file quaternion.h.
| irr::core::quaternion::quaternion | ( | ) | [inline] |
Default Constructor.
Definition at line 26 of file quaternion.h.
Referenced by operator*(), and operator+().
Constructor.
Definition at line 29 of file quaternion.h.
Constructor which converts euler angles (radians) to a quaternion.
Definition at line 158 of file quaternion.h.
| irr::core::quaternion::quaternion | ( | const vector3df & | vec | ) | [inline] |
Constructor which converts euler angles (radians) to a quaternion.
Definition at line 165 of file quaternion.h.
References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.
| irr::core::quaternion::quaternion | ( | const matrix4 & | mat | ) | [inline] |
Constructor which converts a matrix to a quaternion.
Definition at line 172 of file quaternion.h.
| f32 irr::core::quaternion::dotProduct | ( | const quaternion & | other | ) | const [inline] |
| bool irr::core::quaternion::equals | ( | const quaternion & | other, |
| const f32 | tolerance = ROUNDING_ERROR_f32 |
||
| ) | const [inline] |
| quaternion & irr::core::quaternion::fromAngleAxis | ( | f32 | angle, |
| const vector3df & | axis | ||
| ) | [inline] |
Create quaternion from rotation angle and rotation axis.
Axis must be unit length. The quaternion representing the rotation is q = cos(A/2)+sin(A/2)*(x*i+y*j+z*k).
| angle | Rotation Angle in radians. |
| axis | Rotation axis. |
axis must be unit length angle in radians
Definition at line 539 of file quaternion.h.
References W, X, irr::core::vector3d< T >::X, Y, irr::core::vector3d< T >::Y, Z, and irr::core::vector3d< T >::Z.
| matrix4 irr::core::quaternion::getMatrix | ( | ) | const [inline] |
Creates a matrix from this quaternion.
Definition at line 307 of file quaternion.h.
References getMatrix_transposed().
Referenced by irr::scene::SMD3QuaternionTag::setto().
| void irr::core::quaternion::getMatrix | ( | matrix4 & | dest, |
| const core::vector3df & | center | ||
| ) | const [inline] |
Creates a matrix from this quaternion.
Creates a matrix from this quaternion
Definition at line 318 of file quaternion.h.
References irr::core::CMatrix4< T >::pointer(), irr::core::CMatrix4< T >::setDefinitelyIdentityMatrix(), W, X, irr::core::vector3d< T >::X, Y, irr::core::vector3d< T >::Y, Z, and irr::core::vector3d< T >::Z.
| void irr::core::quaternion::getMatrix_transposed | ( | matrix4 & | dest | ) | const [inline] |
Creates a matrix from this quaternion.
Definition at line 385 of file quaternion.h.
References irr::core::CMatrix4< T >::setDefinitelyIdentityMatrix(), W, X, Y, and Z.
Referenced by getMatrix().
| void irr::core::quaternion::getMatrixCenter | ( | matrix4 & | dest, |
| const core::vector3df & | center, | ||
| const core::vector3df & | translation | ||
| ) | const [inline] |
Creates a matrix from this quaternion Rotate about a center point shortcut for core::quaternion q; q.rotationFromTo ( vin[i].Normal, forward ); q.getMatrixCenter ( lookat, center, newPos );
core::matrix4 m2; m2.setInverseTranslation ( center ); lookat *= m2;
core::matrix4 m3; m2.setTranslation ( newPos ); lookat *= m3;
Creates a matrix from this quaternion Rotate about a center point shortcut for core::quaternion q; q.rotationFromTo ( vin[i].Normal, forward ); q.getMatrix ( lookat, center );
core::matrix4 m2; m2.setInverseTranslation ( center ); lookat *= m2;
Definition at line 360 of file quaternion.h.
References irr::core::CMatrix4< T >::pointer(), irr::core::CMatrix4< T >::setRotationCenter(), W, X, Y, and Z.
| quaternion & irr::core::quaternion::lerp | ( | quaternion | q1, |
| quaternion | q2, | ||
| f32 | time | ||
| ) | [inline] |
Set this quaternion to the result of the linear interpolation between two quaternions.
Definition at line 497 of file quaternion.h.
Referenced by slerp().
| core::quaternion & irr::core::quaternion::makeIdentity | ( | ) | [inline] |
Set quaternion to identity.
Definition at line 625 of file quaternion.h.
Referenced by rotationFromTo().
| quaternion & irr::core::quaternion::makeInverse | ( | ) | [inline] |
| quaternion & irr::core::quaternion::normalize | ( | ) | [inline] |
Normalizes the quaternion.
Definition at line 484 of file quaternion.h.
References irr::core::reciprocal_squareroot(), W, X, Y, and Z.
Referenced by operator=(), rotationFromTo(), and set().
| bool irr::core::quaternion::operator!= | ( | const quaternion & | other | ) | const [inline] |
inequality operator
Definition at line 188 of file quaternion.h.
| quaternion irr::core::quaternion::operator* | ( | const quaternion & | other | ) | const [inline] |
| quaternion irr::core::quaternion::operator* | ( | f32 | s | ) | const [inline] |
Multiplication operator with scalar.
Definition at line 278 of file quaternion.h.
References quaternion(), W, X, Y, and Z.
Multiplication operator.
Definition at line 610 of file quaternion.h.
References irr::core::vector3d< T >::crossProduct(), W, X, Y, and Z.
| quaternion & irr::core::quaternion::operator*= | ( | f32 | s | ) | [inline] |
| quaternion & irr::core::quaternion::operator*= | ( | const quaternion & | other | ) | [inline] |
Multiplication operator.
Definition at line 294 of file quaternion.h.
| quaternion irr::core::quaternion::operator+ | ( | const quaternion & | other | ) | const [inline] |
| quaternion & irr::core::quaternion::operator= | ( | const quaternion & | other | ) | [inline] |
| quaternion & irr::core::quaternion::operator= | ( | const matrix4 & | other | ) | [inline] |
Matrix assignment operator.
Definition at line 205 of file quaternion.h.
References normalize(), W, X, Y, and Z.
| bool irr::core::quaternion::operator== | ( | const quaternion & | other | ) | const [inline] |
| core::quaternion & irr::core::quaternion::rotationFromTo | ( | const vector3df & | from, |
| const vector3df & | to | ||
| ) | [inline] |
Set quaternion to represent a rotation from one vector to another.
Definition at line 634 of file quaternion.h.
References irr::core::vector3d< T >::crossProduct(), irr::core::vector3d< T >::dotProduct(), irr::core::vector3d< T >::getLength(), makeIdentity(), normalize(), irr::core::vector3d< T >::normalize(), irr::core::vector3d< T >::set(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.
| quaternion & irr::core::quaternion::set | ( | f32 | x, |
| f32 | y, | ||
| f32 | z, | ||
| f32 | w | ||
| ) | [inline] |
| quaternion & irr::core::quaternion::set | ( | f32 | x, |
| f32 | y, | ||
| f32 | z | ||
| ) | [inline] |
Sets new quaternion based on euler angles (radians)
Definition at line 431 of file quaternion.h.
References normalize(), W, X, Y, and Z.
| quaternion & irr::core::quaternion::set | ( | const core::vector3df & | vec | ) | [inline] |
Sets new quaternion based on euler angles (radians)
Definition at line 461 of file quaternion.h.
References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.
| quaternion & irr::core::quaternion::set | ( | const core::quaternion & | quat | ) | [inline] |
Sets new quaternion from other quaternion.
Definition at line 467 of file quaternion.h.
| quaternion & irr::core::quaternion::slerp | ( | quaternion | q1, |
| quaternion | q2, | ||
| f32 | interpolate | ||
| ) | [inline] |
Set this quaternion to the result of the spherical interpolation between two quaternions.
Definition at line 506 of file quaternion.h.
References dotProduct(), lerp(), and irr::core::reciprocal().
| void irr::core::quaternion::toAngleAxis | ( | f32 & | angle, |
| core::vector3df & | axis | ||
| ) | const [inline] |
Fills an angle (radians) around an axis (unit vector)
Definition at line 551 of file quaternion.h.
References irr::core::iszero(), irr::core::reciprocal(), W, X, irr::core::vector3d< T >::X, Y, irr::core::vector3d< T >::Y, Z, and irr::core::vector3d< T >::Z.
| void irr::core::quaternion::toEuler | ( | vector3df & | euler | ) | const [inline] |
Output this quaternion to an euler angle (radians)
Definition at line 572 of file quaternion.h.
References irr::core::clamp(), irr::core::equals(), irr::core::PI64, W, X, irr::core::vector3d< T >::X, Y, irr::core::vector3d< T >::Y, Z, and irr::core::vector3d< T >::Z.
Definition at line 153 of file quaternion.h.
Referenced by dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), normalize(), operator*(), operator*=(), operator+(), operator=(), operator==(), set(), toAngleAxis(), and toEuler().
Quaternion elements.
Definition at line 150 of file quaternion.h.
Referenced by dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*=(), operator+(), operator=(), operator==(), set(), toAngleAxis(), and toEuler().
Definition at line 151 of file quaternion.h.
Referenced by dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*=(), operator+(), operator=(), operator==(), set(), toAngleAxis(), and toEuler().
Definition at line 152 of file quaternion.h.
Referenced by dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*=(), operator+(), operator=(), operator==(), set(), toAngleAxis(), and toEuler().