Irrlicht 3D Engine
irr::core::quaternion Class Reference

Quaternion class for representing rotations. More...

#include <quaternion.h>

List of all members.

Public Member Functions

Public Attributes


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

irr::core::quaternion::quaternion ( ) [inline]

Default Constructor.

Definition at line 31 of file quaternion.h.

Referenced by operator*(), and operator+().

irr::core::quaternion::quaternion ( f32  x,
f32  y,
f32  z,
f32  w 
) [inline]

Constructor.

Definition at line 34 of file quaternion.h.

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.

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


Member Function Documentation

f32 irr::core::quaternion::dotProduct ( const quaternion other) const [inline]

Calculates the dot product.

Definition at line 556 of file quaternion.h.

References W, X, Y, and Z.

Referenced by slerp().

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 W, X, Y, and Z.

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:
angleRotation Angle in radians.
axisRotation axis.

Definition at line 563 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 338 of file quaternion.h.

Referenced by irr::scene::SMD3QuaternionTag::setto().

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.

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.

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.

quaternion & irr::core::quaternion::lerp ( quaternion  q1,
quaternion  q2,
f32  time 
) [inline]

Set this quaternion to the linear interpolation between two quaternions.

Parameters:
q1First quaternion to be interpolated.
q2Second quaternion to be interpolated.
timeProgress 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.

Referenced by slerp().

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().

quaternion & irr::core::quaternion::makeInverse ( ) [inline]

Inverts this quaternion.

Definition at line 438 of file quaternion.h.

References X, Y, and Z.

quaternion & irr::core::quaternion::normalize ( ) [inline]

Normalizes the quaternion.

Definition at line 510 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 217 of file quaternion.h.

quaternion irr::core::quaternion::operator* ( const quaternion other) const [inline]

Multiplication operator.

Definition at line 294 of file quaternion.h.

References W, X, Y, and Z.

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.

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.

quaternion & irr::core::quaternion::operator*= ( f32  s) [inline]

Multiplication operator with scalar.

Definition at line 315 of file quaternion.h.

References W, X, Y, and Z.

quaternion & irr::core::quaternion::operator*= ( const quaternion other) [inline]

Multiplication operator.

Definition at line 325 of file quaternion.h.

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.

quaternion & irr::core::quaternion::operator= ( const quaternion other) [inline]

Assignment operator.

Definition at line 223 of file quaternion.h.

References W, X, Y, and Z.

quaternion & irr::core::quaternion::operator= ( const matrix4 other) [inline]

Matrix assignment operator.

Definition at line 234 of file quaternion.h.

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

bool irr::core::quaternion::operator== ( const quaternion other) const [inline]

Equalilty operator.

Definition at line 208 of file quaternion.h.

References W, X, Y, and Z.

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 W, X, Y, and Z.

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

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:
q1First quaternion to be interpolated.
q2Second quaternion to be interpolated.
timeProgress of interpolation. For time=0 the result is q1, for time=1 the result is q2. Otherwise interpolation between q1 and q2.
thresholdTo 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 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 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.

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


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