Loading...
Searching...
No Matches
irr::core::quaternion Class Reference

Quaternion class for representing rotations. More...

`#include <quaternion.h>`

## Public Member Functions

| quaternion ()
| Default Constructor.
| quaternion (const matrix4 &mat)
| Constructor which converts a matrix to a quaternion.
| quaternion (const vector3df &vec)
| Constructor which converts euler angles (radians) to a quaternion.
| quaternion (f32 x, f32 y, f32 z)
| Constructor which converts euler angles (radians) to a quaternion.
| quaternion (f32 x, f32 y, f32 z, f32 w)
| Constructor.
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=core::vector3df()) 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 &center, const core::vector3df &translation) const
quaternion & | lerp (quaternion q1, quaternion q2, f32 time)
| Set this quaternion to 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.
vector3df | operator* (const vector3df &v) const
| Multiplication operator.
quaternion | operator* (f32 s) const
| Multiplication operator with scalar.
quaternion & | operator*= (const quaternion &other)
| Multiplication operator.
quaternion & | operator*= (f32 s)
| Multiplication operator with scalar.
quaternion | operator+ (const quaternion &other) const
| Add operator.
quaternion & | operator= (const matrix4 &other)
| Matrix assignment operator.
quaternion & | operator= (const quaternion &other)
| Assignment operator.
bool | operator== (const quaternion &other) const
| Equalilty operator.
quaternion & | rotationFromTo (const vector3df &from, const vector3df &to)
| Set quaternion to represent a rotation from one vector to another.
quaternion & | set (const core::quaternion &quat)
| Sets new quaternion from other quaternion.
quaternion & | set (const core::vector3df &vec)
| Sets new quaternion based on euler angles (radians).
quaternion & | set (f32 x, f32 y, f32 z)
| Sets new quaternion based on euler angles (radians).
quaternion & | set (f32 x, f32 y, f32 z, f32 w)
| Sets new quaternion.
quaternion & | slerp (quaternion q1, quaternion q2, f32 time, f32 threshold=.05f)
| 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

## Detailed Description

Quaternion class for representing rotations.

It provides cheap combinations and avoids gimbal locks. Also useful for interpolations.

Definition at line 26 of file quaternion.h.

## Constructor & Destructor Documentation

## quaternion() [1/5]

irr::core::quaternion::quaternion | ( |  | ) |

inline

Default Constructor.

Definition at line 31 of file quaternion.h.

References W, X, Y, and Z.

Referenced by dotProduct(), equals(), fromAngleAxis(), lerp(), makeInverse(), normalize(), operator!=(), operator*(), operator*(), operator*=(), operator*=(), operator+(), operator=(), operator=(), operator==(), set(), set(), set(), set(), and slerp().

## quaternion() [2/5]

irr::core::quaternion::quaternion | ( | f32 | x,
|  | f32 | y,
|  | f32 | z,
|  | f32 | w )

inline

Constructor.

Definition at line 34 of file quaternion.h.

References W, X, Y, and Z.

## quaternion() [3/5]

irr::core::quaternion::quaternion | ( | f32 | x,
|  | f32 | y,
|  | f32 | z )

inline

Constructor which converts euler angles (radians) to a quaternion.

Definition at line 187 of file quaternion.h.

References set().

## quaternion() [4/5]

irr::core::quaternion::quaternion | ( | const vector3df & | vec | ) |

inline

Constructor which converts euler angles (radians) to a quaternion.

Definition at line 194 of file quaternion.h.

References set(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## quaternion() [5/5]

irr::core::quaternion::quaternion | ( | const matrix4 & | mat | ) |

inline

Constructor which converts a matrix to a quaternion.

Definition at line 201 of file quaternion.h.

## Member Function Documentation

## dotProduct()

f32 irr::core::quaternion::dotProduct | ( | const quaternion & | other | ) | const

inline

Calculates the dot product.

Definition at line 556 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

Referenced by slerp().

## equals()

bool irr::core::quaternion::equals | ( | const quaternion & | other,
|  | const f32 | tolerance = ROUNDING_ERROR_f32 ) const

inline

returns if this quaternion equals the other one, taking floating point rounding errors into account

Definition at line 500 of file quaternion.h.

References quaternion(), irr::core::equals(), W, X, Y, and Z.

## fromAngleAxis()

quaternion & irr::core::quaternion::fromAngleAxis | ( | f32 | angle,
|  | const vector3df & | axis )

inline

Create quaternion from rotation angle and rotation axis.

axis must be unit length, angle in radians

Axis must be unit length. The quaternion representing the rotation is q = cos(A/2)+sin(A/2)*(x*i+y*j+z*k).

Parameters

  angle | Rotation Angle in radians.
  axis | Rotation axis.

Definition at line 563 of file quaternion.h.

References quaternion(), W, X, irr::core::vector3d< T >::X, Y, irr::core::vector3d< T >::Y, Z, and irr::core::vector3d< T >::Z.

## getMatrix() [1/2]

matrix4 irr::core::quaternion::getMatrix | ( |  | ) | const

inline

Creates a matrix from this quaternion.

Definition at line 338 of file quaternion.h.

References getMatrix().

Referenced by getMatrix().

## getMatrix() [2/2]

void irr::core::quaternion::getMatrix | ( | matrix4 & | dest,
|  | const core::vector3df & | center = core::vector3df() ) const

inline

Creates a matrix from this quaternion.

Creates a matrix from this quaternion

Definition at line 349 of file quaternion.h.

References 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.

## getMatrix_transposed()

void irr::core::quaternion::getMatrix_transposed | ( | matrix4 & | dest | ) | const

inline

Creates a matrix from this quaternion.

Definition at line 411 of file quaternion.h.

References irr::core::CMatrix4< T >::setDefinitelyIdentityMatrix(), W, X, Y, and Z.

## getMatrixCenter()

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 388 of file quaternion.h.

References irr::core::CMatrix4< T >::setRotationCenter(), W, X, Y, and Z.

## lerp()

quaternion & irr::core::quaternion::lerp | ( | quaternion | q1,
|  | quaternion | q2,
|  | f32 | time )

inline

Set this quaternion to the linear interpolation between two quaternions.

Parameters

  q1 | First quaternion to be interpolated.
  q2 | Second quaternion to be interpolated.
  time | Progress of interpolation. For time=0 the result is q1, for time=1 the result is q2. Otherwise interpolation between q1 and q2.

Definition at line 523 of file quaternion.h.

References quaternion().

Referenced by slerp().

## makeIdentity()

core::quaternion & irr::core::quaternion::makeIdentity | ( |  | ) |

inline

Set quaternion to identity.

Definition at line 649 of file quaternion.h.

References W, X, Y, and Z.

Referenced by rotationFromTo().

## makeInverse()

quaternion & irr::core::quaternion::makeInverse | ( |  | ) |

inline

Inverts this quaternion.

Definition at line 438 of file quaternion.h.

References quaternion(), X, Y, and Z.

## normalize()

quaternion & irr::core::quaternion::normalize | ( |  | ) |

inline

Normalizes the quaternion.

Definition at line 510 of file quaternion.h.

References quaternion(), irr::core::reciprocal_squareroot(), W, X, Y, and Z.

Referenced by operator=(), rotationFromTo(), and set().

## operator!=()

bool irr::core::quaternion::operator!= | ( | const quaternion & | other | ) | const

inline

inequality operator

Definition at line 217 of file quaternion.h.

References quaternion().

## operator*() [1/3]

quaternion irr::core::quaternion::operator* | ( | const quaternion & | other | ) | const

inline

Multiplication operator.

Definition at line 294 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## operator*() [2/3]

vector3df irr::core::quaternion::operator* | ( | const vector3df & | v | ) | const

inline

Multiplication operator.

Definition at line 634 of file quaternion.h.

References irr::core::vector3d< T >::crossProduct(), W, X, Y, and Z.

## operator*() [3/3]

quaternion irr::core::quaternion::operator* | ( | f32 | s | ) | const

inline

Multiplication operator with scalar.

Definition at line 308 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## operator*=() [1/2]

quaternion & irr::core::quaternion::operator*= | ( | const quaternion & | other | ) |

inline

Multiplication operator.

Definition at line 325 of file quaternion.h.

References quaternion().

## operator*=() [2/2]

quaternion & irr::core::quaternion::operator*= | ( | f32 | s | ) |

inline

Multiplication operator with scalar.

Definition at line 315 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## operator+()

quaternion irr::core::quaternion::operator+ | ( | const quaternion & | other | ) | const

inline

Add operator.

Definition at line 331 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## operator=() [1/2]

quaternion & irr::core::quaternion::operator= | ( | const matrix4 & | other | ) |

inline

Matrix assignment operator.

Definition at line 234 of file quaternion.h.

References quaternion(), normalize(), W, X, Y, and Z.

## operator=() [2/2]

quaternion & irr::core::quaternion::operator= | ( | const quaternion & | other | ) |

inline

Assignment operator.

Definition at line 223 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## operator==()

bool irr::core::quaternion::operator== | ( | const quaternion & | other | ) | const

inline

Equalilty operator.

Definition at line 208 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

## rotationFromTo()

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 658 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(), set(), irr::core::vector3d< T >::set(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## set() [1/4]

quaternion & irr::core::quaternion::set | ( | const core::quaternion & | quat | ) |

inline

Sets new quaternion from other quaternion.

Definition at line 493 of file quaternion.h.

References quaternion().

## set() [2/4]

quaternion & irr::core::quaternion::set | ( | const core::vector3df & | vec | ) |

inline

Sets new quaternion based on euler angles (radians).

Definition at line 487 of file quaternion.h.

References quaternion(), set(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## set() [3/4]

quaternion & irr::core::quaternion::set | ( | f32 | x,
|  | f32 | y,
|  | f32 | z )

inline

Sets new quaternion based on euler angles (radians).

Definition at line 457 of file quaternion.h.

References quaternion(), normalize(), W, X, Y, and Z.

## set() [4/4]

quaternion & irr::core::quaternion::set | ( | f32 | x,
|  | f32 | y,
|  | f32 | z,
|  | f32 | w )

inline

Sets new quaternion.

Definition at line 446 of file quaternion.h.

References quaternion(), W, X, Y, and Z.

Referenced by quaternion(), quaternion(), rotationFromTo(), and set().

## slerp()

quaternion & irr::core::quaternion::slerp | ( | quaternion | q1,
|  | quaternion | q2,
|  | f32 | time,
|  | f32 | threshold = .05f )

inline

Set this quaternion to the result of the spherical interpolation between two quaternions.

Parameters

  q1 | First quaternion to be interpolated.
  q2 | Second quaternion to be interpolated.
  time | Progress of interpolation. For time=0 the result is q1, for time=1 the result is q2. Otherwise interpolation between q1 and q2.
  threshold | To avoid inaccuracies at the end (time=1) the interpolation switches to linear interpolation at some point. This value defines how much of the remaining interpolation will be calculated with lerp. Everything from 1-threshold up will be linear interpolation.

Definition at line 531 of file quaternion.h.

References quaternion(), dotProduct(), lerp(), and irr::core::reciprocal().

## toAngleAxis()

void irr::core::quaternion::toAngleAxis | ( | f32 & | angle,
|  | core::vector3df & | axis ) const

inline

Fills an angle (radians) around an axis (unit vector).

Definition at line 575 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.

## toEuler()

void irr::core::quaternion::toEuler | ( | vector3df & | euler | ) | const

inline

Output this quaternion to an euler angle (radians).

Definition at line 596 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.

## Member Data Documentation

## W

f32 irr::core::quaternion::W

Definition at line 182 of file quaternion.h.

Referenced by quaternion(), quaternion(), dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), normalize(), operator*(), operator*(), operator*(), operator*=(), operator+(), operator=(), operator=(), operator==(), set(), set(), toAngleAxis(), and toEuler().

## X

f32 irr::core::quaternion::X

Quaternion elements.

Definition at line 179 of file quaternion.h.

Referenced by quaternion(), quaternion(), dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*(), operator*(), operator*=(), operator+(), operator=(), operator=(), operator==(), set(), set(), toAngleAxis(), and toEuler().

## Y

f32 irr::core::quaternion::Y

Definition at line 180 of file quaternion.h.

Referenced by quaternion(), quaternion(), dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*(), operator*(), operator*=(), operator+(), operator=(), operator=(), operator==(), set(), set(), toAngleAxis(), and toEuler().

## Z

f32 irr::core::quaternion::Z

Definition at line 181 of file quaternion.h.

Referenced by quaternion(), quaternion(), dotProduct(), equals(), fromAngleAxis(), getMatrix(), getMatrix_transposed(), getMatrixCenter(), makeIdentity(), makeInverse(), normalize(), operator*(), operator*(), operator*(), operator*=(), operator+(), operator=(), operator=(), operator==(), set(), set(), toAngleAxis(), and toEuler().

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

- quaternion.h

- Irrlicht Engine Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on for Irrlicht 3D Engine by Doxygen 1.15.0