/ich/Programmieren/KazadeEngine/NeHeKazmath/kazmath/src/quaternion.h File Reference

#include "utility.h"
#include "mat4.h"

Go to the source code of this file.

Data Structures

struct  kmQuaternion

Functions

kmQuaternionkmQuaternionConjugate (kmQuaternion *pOut, const kmQuaternion *pIn)
 Returns pOut, sets pOut to the conjugate of pIn.
kmScalar kmQuaternionDot (const kmQuaternion *q1, const kmQuaternion *q2)
 Returns the dot product of the 2 quaternions.
kmQuaternionkmQuaternionExp (kmQuaternion *pOut, const kmQuaternion *pIn)
 Returns the exponential of the quaternion.
kmQuaternionkmQuaternionIdentity (kmQuaternion *pOut)
 Returns the inverse of the passed Quaternion.
kmQuaternionkmQuaternionInverse (kmQuaternion *pOut, const kmQuaternion *pIn)
 Returns true if the quaternion is an identity quaternion.
int kmQuaternionIsIdentity (const kmQuaternion *pIn)
 Returns the length of the quaternion.
kmScalar kmQuaternionLength (const kmQuaternion *pIn)
 Returns the length of the quaternion squared (prevents a sqrt).
kmScalar kmQuaternionLengthSq (const kmQuaternion *pIn)
 Returns the natural logarithm.
kmQuaternionkmQuaternionLn (kmQuaternion *pOut, const kmQuaternion *pIn)
 Multiplies 2 quaternions together.
kmQuaternionkmQuaternionMultiply (kmQuaternion *pOut, const kmQuaternion *q1, const kmQuaternion *q2)
 Normalizes a quaternion.
kmQuaternionkmQuaternionNormalize (kmQuaternion *pOut, const kmQuaternion *pIn)
 Rotates a quaternion around an axis.
kmQuaternionkmQuaternionRotationAxis (kmQuaternion *pOut, const kmVec3 *pV, kmScalar angle)
 Creates a quaternion from a rotation matrix.
kmQuaternionkmQuaternionRotationMatrix (kmQuaternion *pOut, const kmMat4 *pIn)
 Create a quaternion from yaw, pitch and roll.
kmQuaternionkmQuaternionRotationYawPitchRoll (kmQuaternion *pOut, kmScalar yaw, kmScalar pitch, kmScalar roll)
 Interpolate between 2 quaternions.
kmQuaternionkmQuaternionSlerp (kmQuaternion *pOut, const kmQuaternion *q1, const kmQuaternion *q2, kmScalar t)
 Get the axis and angle of rotation from a quaternion.
void kmQuaternionToAxisAngle (const kmQuaternion *pIn, kmVec3 *pVector, kmScalar *pAngle)
 Scale a quaternion.
kmQuaternionkmQuaternionScale (kmQuaternion *pOut, const kmQuaternion *pIn, kmScalar s)
kmQuaternionkmQuaternionAssign (kmQuaternion *pOut, const kmQuaternion *pIn)
kmQuaternionkmQuaternionAdd (kmQuaternion *pOut, const kmQuaternion *pQ1, const kmQuaternion *pQ2)
kmQuaternionkmQuaternionRotationBetweenVec3 (kmQuaternion *pOut, const kmVec3 *vec1, const kmVec3 *vec2, const kmVec3 *fallback)
kmVec3kmQuaternionMultiplyVec3 (kmVec3 *pOut, const kmQuaternion *q, const kmVec3 *v)


Function Documentation

kmQuaternion* kmQuaternionAdd ( kmQuaternion pOut,
const kmQuaternion pQ1,
const kmQuaternion pQ2 
)

Definition at line 374 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

Referenced by kmQuaternionSlerp().

kmQuaternion* kmQuaternionAssign ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Definition at line 367 of file quaternion.c.

kmQuaternion* kmQuaternionConjugate ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Returns pOut, sets pOut to the conjugate of pIn.

Returns pOut, sets pOut to the conjugate of pIn.

Returns the dot product of the 2 quaternions

Definition at line 36 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

Referenced by kmQuaternionInverse().

kmScalar kmQuaternionDot ( const kmQuaternion q1,
const kmQuaternion q2 
)

Returns the dot product of the 2 quaternions.

Definition at line 47 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

Referenced by kmQuaternionSlerp().

kmQuaternion* kmQuaternionExp ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Returns the exponential of the quaternion.

Makes the passed quaternion an identity quaternion

Definition at line 58 of file quaternion.c.

kmQuaternion* kmQuaternionIdentity ( kmQuaternion pOut  ) 

Returns the inverse of the passed Quaternion.

Definition at line 66 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

Referenced by kmQuaternionRotationBetweenVec3().

kmQuaternion* kmQuaternionInverse ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Returns true if the quaternion is an identity quaternion.

Get the conjugute and divide by the length

Definition at line 77 of file quaternion.c.

References kmEpsilon, kmQuaternionConjugate(), kmQuaternionLength(), kmQuaternionScale(), kmScalar, kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

int kmQuaternionIsIdentity ( const kmQuaternion pIn  ) 

Returns the length of the quaternion.

Definition at line 103 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

kmScalar kmQuaternionLength ( const kmQuaternion pIn  ) 

Returns the length of the quaternion squared (prevents a sqrt).

Definition at line 110 of file quaternion.c.

References kmQuaternionLengthSq().

Referenced by kmQuaternionInverse(), and kmQuaternionNormalize().

kmScalar kmQuaternionLengthSq ( const kmQuaternion pIn  ) 

Returns the natural logarithm.

Definition at line 116 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

Referenced by kmQuaternionLength().

kmQuaternion* kmQuaternionLn ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Multiplies 2 quaternions together.

Definition at line 123 of file quaternion.c.

kmQuaternion* kmQuaternionMultiply ( kmQuaternion pOut,
const kmQuaternion q1,
const kmQuaternion q2 
)

Normalizes a quaternion.

Definition at line 139 of file quaternion.c.

References kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

kmVec3* kmQuaternionMultiplyVec3 ( kmVec3 pOut,
const kmQuaternion q,
const kmVec3 v 
)

kmQuaternion* kmQuaternionNormalize ( kmQuaternion pOut,
const kmQuaternion pIn 
)

Rotates a quaternion around an axis.

Definition at line 152 of file quaternion.c.

References kmEpsilon, kmQuaternionLength(), kmQuaternionScale(), and kmScalar.

Referenced by kmQuaternionRotationBetweenVec3(), kmQuaternionRotationMatrix(), and kmQuaternionRotationYawPitchRoll().

kmQuaternion* kmQuaternionRotationAxis ( kmQuaternion pOut,
const kmVec3 pV,
kmScalar  angle 
)

Creates a quaternion from a rotation matrix.

Definition at line 163 of file quaternion.c.

References kmScalar, kmQuaternion::w, kmVec3::x, kmQuaternion::x, kmVec3::y, kmQuaternion::y, kmVec3::z, and kmQuaternion::z.

Referenced by kmQuaternionRotationBetweenVec3().

kmQuaternion* kmQuaternionRotationBetweenVec3 ( kmQuaternion pOut,
const kmVec3 vec1,
const kmVec3 vec2,
const kmVec3 fallback 
)

Adapted from the OGRE engine!

Gets the shortest arc quaternion to rotate this vector to the destination vector.

Remarks:
If you call this with a dest vector that is close to the inverse of this vector, we will rotate 180 degrees around the 'fallbackAxis' (if specified, or a generated axis if not) since in this case ANY axis of rotation is valid.

Definition at line 395 of file quaternion.c.

References kmEpsilon, kmPI, kmQuaternionIdentity(), kmQuaternionNormalize(), kmQuaternionRotationAxis(), kmScalar, kmVec3Assign(), kmVec3Cross(), kmVec3Dot(), kmVec3LengthSq(), kmVec3Normalize(), kmQuaternion::w, kmQuaternion::x, kmVec3::x, kmQuaternion::y, kmVec3::y, kmQuaternion::z, and kmVec3::z.

kmQuaternion* kmQuaternionRotationMatrix ( kmQuaternion pOut,
const kmMat4 pIn 
)

Create a quaternion from yaw, pitch and roll.

Definition at line 179 of file quaternion.c.

References kmEpsilon, kmQuaternionNormalize(), kmScalar, kmMat4::mat, kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

kmQuaternion* kmQuaternionRotationYawPitchRoll ( kmQuaternion pOut,
kmScalar  yaw,
kmScalar  pitch,
kmScalar  roll 
)

Interpolate between 2 quaternions.

Definition at line 256 of file quaternion.c.

References kmDegreesToRadians(), kmQuaternionNormalize(), kmScalar, kmQuaternion::w, kmQuaternion::x, kmQuaternion::y, and kmQuaternion::z.

kmQuaternion* kmQuaternionScale ( kmQuaternion pOut,
const kmQuaternion pIn,
kmScalar  s 
)

kmQuaternion* kmQuaternionSlerp ( kmQuaternion pOut,
const kmQuaternion q1,
const kmQuaternion q2,
kmScalar  t 
)

Get the axis and angle of rotation from a quaternion.

Definition at line 291 of file quaternion.c.

References kmQuaternionAdd(), kmQuaternionDot(), kmQuaternionScale(), kmScalar, and kmSQR().

void kmQuaternionToAxisAngle ( const kmQuaternion pIn,
kmVec3 pVector,
kmScalar *  pAngle 
)


Generated on Mon Dec 29 18:40:11 2008 for Kazmath by  doxygen 1.5.6