Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials

irr::core::quaternion Class Reference

Quaternion class for representing rotations. More...

#include <quaternion.h>

List of all members.

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
quaternionfromAngleAxis (f32 angle, const vector3df &axis)
 Create quaternion from rotation angle and rotation axis.
void getMatrix (matrix4 &dest, const core::vector3df &translation) const
 Creates a matrix from this quaternion.
matrix4 getMatrix () 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
quaternionmakeIdentity ()
 Set quaternion to identity.
quaternionmakeInverse ()
 Inverts this quaternion.
quaternionnormalize ()
 Normalizes the quaternion.
bool operator!= (const quaternion &other) const
 inequality operator
vector3df operator* (const vector3df &v) const
 Multiplication operator.
quaternion operator* (f32 s) const
 Multiplication operator with scalar.
quaternion operator* (const quaternion &other) const
 Multiplication operator.
quaternionoperator*= (const quaternion &other)
 Multiplication operator.
quaternionoperator*= (f32 s)
 Multiplication operator with scalar.
quaternion operator+ (const quaternion &other) const
 Add operator.
quaternionoperator= (const matrix4 &other)
 Matrix assignment operator.
quaternionoperator= (const quaternion &other)
 Assignment operator.
bool operator== (const quaternion &other) const
 Equalilty operator.
 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.
 quaternion ()
 Default Constructor.
quaternionrotationFromTo (const vector3df &from, const vector3df &to)
 Set quaternion to represent a rotation from one vector to another.
quaternionset (const core::quaternion &quat)
 Sets new quaternion from other quaternion.
quaternionset (const core::vector3df &vec)
 Sets new quaternion based on euler angles (radians).
quaternionset (f32 x, f32 y, f32 z)
 Sets new quaternion based on euler angles (radians).
quaternionset (f32 x, f32 y, f32 z, f32 w)
 Sets new quaternion.
quaternionslerp (quaternion q1, quaternion q2, f32 interpolate)
 Set this quaternion to the result of the 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 21 of file quaternion.h.


Constructor & Destructor Documentation

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

Default Constructor.

Definition at line 26 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 29 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 155 of file quaternion.h.

irr::core::quaternion::quaternion ( const vector3df vec  )  [inline]

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

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


Member Function Documentation

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

Calculates the dot product.

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

axis must be unit length angle in radians

Definition at line 542 of file quaternion.h.

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

Referenced by rotationFromTo().

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

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

matrix4 irr::core::quaternion::getMatrix (  )  const [inline]

Creates a matrix from this quaternion.

Definition at line 304 of file quaternion.h.

References getMatrix_transposed().

Referenced by irr::scene::SMD3QuaternionTag::operator==().

void irr::core::quaternion::getMatrix_transposed ( matrix4 dest  )  const [inline]

Creates a matrix from this quaternion.

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

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

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

Set quaternion to identity.

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

References X, Y, and Z.

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

Normalizes the quaternion.

Definition at line 481 of file quaternion.h.

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

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

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

inequality operator

Definition at line 185 of file quaternion.h.

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

Multiplication operator.

Definition at line 593 of file quaternion.h.

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

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

Multiplication operator with scalar.

Definition at line 275 of file quaternion.h.

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

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

Multiplication operator.

Definition at line 261 of file quaternion.h.

References W, X, Y, and Z.

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

Multiplication operator.

Definition at line 291 of file quaternion.h.

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

Multiplication operator with scalar.

Definition at line 281 of file quaternion.h.

References W, X, Y, and Z.

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

Add operator.

Definition at line 297 of file quaternion.h.

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

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

Matrix assignment operator.

Definition at line 202 of file quaternion.h.

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

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

Assignment operator.

Definition at line 191 of file quaternion.h.

References W, X, Y, and Z.

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

Equalilty operator.

Definition at line 176 of file quaternion.h.

References W, X, Y, and Z.

core::quaternion & irr::core::quaternion::rotationFromTo ( const vector3df from,
const vector3df to 
) [inline]
quaternion & irr::core::quaternion::set ( const core::quaternion quat  )  [inline]

Sets new quaternion from other quaternion.

Definition at line 464 of file quaternion.h.

quaternion & irr::core::quaternion::set ( const core::vector3df vec  )  [inline]

Sets new quaternion based on euler angles (radians).

Definition at line 458 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 ( f32  x,
f32  y,
f32  z 
) [inline]

Sets new quaternion based on euler angles (radians).

Definition at line 428 of file quaternion.h.

References normalize(), 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 417 of file quaternion.h.

References W, X, Y, and Z.

Referenced by slerp().

quaternion & irr::core::quaternion::slerp ( quaternion  q1,
quaternion  q2,
f32  interpolate 
) [inline]

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

Definition at line 494 of file quaternion.h.

References dotProduct(), irr::core::PI, irr::core::reciprocal(), set(), W, X, Y, and Z.

void irr::core::quaternion::toAngleAxis ( f32 angle,
core::vector3df axis 
) const [inline]

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

Definition at line 554 of file quaternion.h.

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

void irr::core::quaternion::toEuler ( vector3df euler  )  const [inline]

Output this quaternion to an euler angle (radians).

Definition at line 575 of file quaternion.h.

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


Member Data Documentation


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

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Sun Oct 24 12:42:03 2010 by Doxygen (1.6.2)