Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials
Public Member Functions | Public Attributes | List of all members
irr::core::quaternion Class Reference

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
quaternionfromAngleAxis (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 &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
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.
quaternionoperator*= (f32 s)
 Multiplication operator with scalar.
quaternionoperator*= (const quaternion &other)
 Multiplication operator.
quaternion operator+ (const quaternion &other) const
 Add operator.
quaternionoperator= (const quaternion &other)
 Assignment operator.
quaternionoperator= (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.
quaternionrotationFromTo (const vector3df &from, const vector3df &to)
 Set quaternion to represent a rotation from one vector to another.
quaternionset (f32 x, f32 y, f32 z, f32 w)
 Sets new quaternion.
quaternionset (f32 x, f32 y, f32 z)
 Sets new quaternion based on euler angles (radians)
quaternionset (const core::vector3df &vec)
 Sets new quaternion based on euler angles (radians)
quaternionset (const core::quaternion &quat)
 Sets new quaternion from other 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
angleRotation Angle in radians.
axisRotation axis.

axis must be unit length angle in radians

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

Referenced by rotationFromTo().

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::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 315 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 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.

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* ( f32  s) const
inline

Multiplication operator with scalar.

Definition at line 275 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 593 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 281 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+ ( 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 quaternion other)
inline

Assignment operator.

Definition at line 191 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 202 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 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 ( 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::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 ( 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 ( const core::quaternion quat)
inline

Sets new quaternion from other quaternion.

Definition at line 464 of file quaternion.h.

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

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

Member Data Documentation

f32 irr::core::quaternion::W
f32 irr::core::quaternion::X
f32 irr::core::quaternion::Y
f32 irr::core::quaternion::Z

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 Fri Mar 21 2014 04:40:21 by Doxygen (1.8.1.2)