Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | Related Pages

Quaternion Class Reference

#include <nemath.h>

Collaboration diagram for Quaternion:

Collaboration graph
[legend]
List of all members.

Detailed Description

Unit quaternion Simple unit quaternion class with useful math operations.

Author:
Mattias Jansson (mattias@realityrift.com)


Public Member Functions

 Quaternion ()
 Quaternion (float fX, float fY, float fZ, float fW)
 Quaternion (const Matrix &rkMatrix)
 Quaternion (const AxisAngle &rkAxisAngle)
 Quaternion (const EulerAngles &rkAngles)
QuaternionReset ()
QuaternionSet (float fX, float fY, float fZ, float fW)
QuaternionNormalize ()
MatrixToMatrix (Matrix *pkMatrix) const
AxisAngle ToAxisAngle () const
EulerAngles ToEulerAngles (unsigned int uiOrder=EulerAngles::XYZs) const
QuaternionInverse ()
QuaternionSlerp (float fT, const Quaternion &rkDest, bool bActuteAngle=false)
Quaternionoperator= (const Matrix &rkMatrix)
Quaternionoperator= (const AxisAngle &rkAxisAngle)
Quaternionoperator= (const EulerAngles &rkEulerAngles)
Quaternion operator * (const Quaternion &rkQuat) const
Quaternion operator * (float fScalar) const
Quaternionoperator *= (const Quaternion &rkQuat)
Quaternionoperator *= (float fScalar)
Quaternion operator~ () const
Vector3d operator * (const Vector3d &rkVector) const
Quaternion operator+ (const Quaternion &rkQuat) const
bool operator== (const Quaternion &rkQuat) const
bool operator!= (const Quaternion &rkQuat) const

Public Attributes

float qx
float qy
float qz
float qw

Static Public Attributes

const NE_STATIC Quaternion IDENTITY


Constructor & Destructor Documentation

NEOENGINE_API Quaternion  )  [inline]
 

Reset components to identity quat

NEOENGINE_API Quaternion float  fX,
float  fY,
float  fZ,
float  fW
[inline]
 

Set components

Parameters:
fX x component
fY y component
fZ z component
fW w component

NEOENGINE_API Quaternion const Matrix rkMatrix  )  [inline]
 

Assignment from matrix (PERFORMANCE WARNING)

Parameters:
rkMatrix Matrix to convert to quaternion

NEOENGINE_API Quaternion const AxisAngle rkAxisAngle  )  [inline]
 

Assignment from axis-angle rotation

Parameters:
rkAxis Axis of rotation (must be normalized!)
fRadians Radians of rotation around axis

NEOENGINE_API Quaternion const EulerAngles rkAngles  )  [inline]
 

Assignment from Euler angles

Parameters:
rkAngles Rotation in Euler angles


Member Function Documentation

NEOENGINE_API Quaternion & Reset  )  [inline]
 

Reset components to identity quat

Returns:
const Quaternion ref (this)

NEOENGINE_API Quaternion & Set float  fX,
float  fY,
float  fZ,
float  fW
[inline]
 

Set components

Parameters:
fX x component
fY y component
fZ z component
fW w component
Returns:
const Quaternion ref (this)

NEOENGINE_API Quaternion & Normalize  )  [inline]
 

Normalize

Returns:
Quaternion ref (this)

NEOENGINE_API Matrix & ToMatrix Matrix pkMatrix  )  const [inline]
 

Convert to matrix

Parameters:
pkMatrix Matrix
Returns:
Matrix

NEOENGINE_API AxisAngle ToAxisAngle  )  const [inline]
 

Convert to axis rotation

Returns:
Rotation as axis-angle

EulerAngles ToEulerAngles unsigned int  uiOrder = EulerAngles::XYZs  )  const
 

Convert to euler angles

Parameters:
uiOrder Requested order of rotation for Euler angles
Returns:
Rotation as Euler angles in specified order

NEOENGINE_API Quaternion & Inverse  )  [inline]
 

Inverse quaternion (will change this quat), equal to conjugate

Returns:
const Quaternion ref (this)

NEOENGINE_API Quaternion & Slerp float  fT,
const Quaternion rkDest,
bool  bActuteAngle = false
[inline]
 

Spherical linear interpolation

Parameters:
fT Time (between 0 and 1)
rkDest Destination quaternion
bActuteAngle If not acute angle, negate target quaternion to avoid extra spins
Returns:
Resulting interpolated quaternion (this)

NEOENGINE_API Quaternion & operator= const Matrix rkMatrix  )  [inline]
 

Assignment from matrix

Parameters:
rkMatrix Matrix to convert to quaternion
Returns:
const Quaternion ref (this)

NEOENGINE_API Quaternion & operator= const AxisAngle rkAxisAngle  )  [inline]
 

Assignment from axis-angle rotation

Parameters:
rkAxisAngle Axis-angle rotation to convert to quaternion
Returns:
const Quaternion ref (this)

Quaternion& operator= const EulerAngles rkEulerAngles  ) 
 

Assignment from euler angles

Parameters:
rkAngles Euler angles to convert to quaternion
Returns:
const Quaternion ref (this)

NEOENGINE_API Quaternion operator * const Quaternion rkQuat  )  const [inline]
 

Quaternion multiplication

Parameters:
rkQuat Quaternion ref to multiply this with, result = this * rkQuat
Returns:
Quaternion result object

NEOENGINE_API Quaternion operator * float  fScalar  )  const [inline]
 

Multiplication with scalar (to non-unit quat, Normalize() will ofcourse restore quat)

Parameters:
fScalar Scaling
Returns:
Quaternion result

NEOENGINE_API Quaternion & operator *= const Quaternion rkQuat  )  [inline]
 

Quaternion multiplication and assignment

Parameters:
rkQuat Quaternion ref to multiply this with, this = this * rkQuat, result = this
Returns:
Quaternion ref (this)

NEOENGINE_API Quaternion & operator *= float  fScalar  )  [inline]
 

Multiplication with scalar (to non-unit quat, Normalize() will ofcourse restore quat)

Parameters:
fScalar Scaling
Returns:
Quaternion ref (this)

NEOENGINE_API Quaternion operator~  )  const [inline]
 

Inverse quaternion (conjugate)

Returns:
Quaternion result object

NEOENGINE_API Vector3d operator * const Vector3d rkVector  )  const [inline]
 

Multiplication with vector (rotate vector)

Parameters:
rkVector Vector to rotate
Returns:
Result vector

NEOENGINE_API Quaternion operator+ const Quaternion rkQuat  )  const [inline]
 

Quaternion addition (to non-unit quat)

Parameters:
rkQuat Quaternion to add
Returns:
Quaternion result

NEOENGINE_API bool operator== const Quaternion rkQuat  )  const [inline]
 

Compare quaternions with epsilon tolerance

Parameters:
rkQuat Quaternion ref object to compare this to
Returns:
true if all components equal (in epsilon zone), false otherwise

NEOENGINE_API bool operator!= const Quaternion rkQuat  )  const [inline]
 

Compare quaternions with epsilon tolerance

Parameters:
rkQuat Quaternion ref object to compare this to
Returns:
true if not equal equal, false if all components equal (in epsilon zone)


Member Data Documentation

float qx
 

Components

float qy
 

Components

float qz
 

Components

float qw
 

Components

const NE_STATIC Quaternion IDENTITY [static]
 

Identity quaternion


The documentation for this class was generated from the following file:
Generated on Wed Jan 21 14:21:12 2004 for NeoEngine by doxygen 1.3.5