My Project
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends | List of all members
ParaEngine::Quaternion Class Reference

Implementation of a Quaternion, i.e. More...

#include <ParaQuaternion.h>

Public Member Functions

 Quaternion (float fX=0.0, float fY=0.0, float fZ=0.0, float fW=1.0)
 
 Quaternion (const Matrix3 &rot)
 Construct a quaternion from a rotation matrix.
 
 Quaternion (const Matrix4 &rot)
 
 Quaternion (const Vector3 &a, const Vector3 &b)
 This constructor creates a new quaternion that will rotate vector a into vector b about their mutually perpendicular axis. More...
 
 Quaternion (const Radian &rfAngle, const Vector3 &rkAxis)
 Construct a quaternion from an angle/axis.
 
 Quaternion (const Vector3 &rkAxis, float fAngle)
 Construct a quaternion from an angle/axis.
 
 Quaternion (const Vector3 &xaxis, const Vector3 &yaxis, const Vector3 &zaxis)
 Construct a quaternion from 3 orthonormal local axes.
 
 Quaternion (const Vector3 *akAxis)
 Construct a quaternion from 3 orthonormal local axes.
 
 Quaternion (float *valptr)
 Construct a quaternion from 4 manual w/x/y/z values.
 
float operator[] (const size_t i) const
 Array accessor operator.
 
float & operator[] (const size_t i)
 Array accessor operator.
 
float * ptr ()
 Pointer accessor for direct copying.
 
const float * ptr () const
 Pointer accessor for direct copying.
 
void FromRotationMatrix (const Matrix3 &kRot)
 
void FromRotationMatrix (const Matrix4 &kRot)
 
void ToRotationMatrix (Matrix3 &kRot) const
 
void ToRotationMatrix (Matrix4 &kRot, const Vector3 &Origin) const
 
void FromAngleAxis (const Radian &rfAngle, const Vector3 &rkAxis)
 
void ToAngleAxis (Radian &rfAngle, Vector3 &rkAxis) const
 
void ToAngleAxis (Degree &dAngle, Vector3 &rkAxis) const
 
void FromAxes (const Vector3 *akAxis)
 
void FromAxes (const Vector3 &xAxis, const Vector3 &yAxis, const Vector3 &zAxis)
 
void ToAxes (Vector3 *akAxis) const
 
void ToAxes (Vector3 &xAxis, Vector3 &yAxis, Vector3 &zAxis) const
 
Vector3 xAxis (void) const
 Get the local x-axis.
 
Vector3 yAxis (void) const
 Get the local y-axis.
 
Vector3 zAxis (void) const
 Get the local z-axis.
 
Quaternionoperator= (const Quaternion &rkQ)
 
Quaternion operator+ (const Quaternion &rkQ) const
 
Quaternion operator- (const Quaternion &rkQ) const
 
Quaternion operator* (const Quaternion &rkQ) const
 
Quaternion operator* (float fScalar) const
 
Quaternion operator- () const
 
bool operator== (const Quaternion &rhs) const
 
bool operator!= (const Quaternion &rhs) const
 
float Dot (const Quaternion &rkQ) const
 
float Norm () const
 
float normalise (void)
 Normalizes this quaternion, and returns the previous length.
 
Quaternion Inverse () const
 
Quaternion UnitInverse () const
 
Quaternion Exp () const
 
Quaternion Log () const
 
QuaternioninvertWinding ()
 
Vector3 operator* (const Vector3 &rkVector) const
 
Radian getRoll (bool reprojectAxis=true) const
 Calculate the local roll element of this quaternion. More...
 
Radian getPitch (bool reprojectAxis=true) const
 Calculate the local pitch element of this quaternion. More...
 
Radian getYaw (bool reprojectAxis=true) const
 Calculate the local yaw element of this quaternion. More...
 
void ToRadians (float *outX, float *outY, float *outZ) const
 
bool equals (const Quaternion &rhs, const Radian &tolerance) const
 Equality with tolerance (tolerance is max angle difference)
 

Static Public Member Functions

static Quaternion Slerp (float fT, const Quaternion &rkP, const Quaternion &rkQ, bool shortestPath=false)
 
static Quaternion SlerpExtraSpins (float fT, const Quaternion &rkP, const Quaternion &rkQ, int iExtraSpins)
 
static void Intermediate (const Quaternion &rkQ0, const Quaternion &rkQ1, const Quaternion &rkQ2, Quaternion &rka, Quaternion &rkB)
 
static Quaternion Squad (float fT, const Quaternion &rkP, const Quaternion &rkA, const Quaternion &rkB, const Quaternion &rkQ, bool shortestPath=false)
 
static Quaternion nlerp (float fT, const Quaternion &rkP, const Quaternion &rkQ, bool shortestPath=false)
 

Public Attributes

float x
 
float y
 
float z
 
float w
 

Static Public Attributes

static const Quaternion ZERO
 
static const Quaternion IDENTITY
 
static const float ms_fEpsilon = 1e-03f
 

Friends

Quaternion operator* (float fScalar, const Quaternion &rkQ)
 
std::ostream & operator<< (std::ostream &o, const Quaternion &q)
 Function for writing to a stream. More...
 

Detailed Description

Implementation of a Quaternion, i.e.

a rotation around an axis. In ParaEngine, we use row matrix which is compatible with DirectX. so the FromRotationMatrix, and ToRotationMatrix will generate row matrix.

Constructor & Destructor Documentation

§ Quaternion()

ParaEngine::Quaternion::Quaternion ( const Vector3 a,
const Vector3 b 
)

This constructor creates a new quaternion that will rotate vector a into vector b about their mutually perpendicular axis.

(if one exists)

Member Function Documentation

§ getPitch()

Radian ParaEngine::Quaternion::getPitch ( bool  reprojectAxis = true) const

Calculate the local pitch element of this quaternion.

Parameters
reprojectAxisBy default the method returns the 'intuitive' result that is, if you projected the local Z of the quaternion onto the X and Y axes, the angle between them is returned. If set to true though, the result is the actual yaw that will be used to implement the quaternion, which is the shortest possible path to get to the same orientation and may involve less axial rotation.

§ getRoll()

Radian ParaEngine::Quaternion::getRoll ( bool  reprojectAxis = true) const

Calculate the local roll element of this quaternion.

Parameters
reprojectAxisBy default the method returns the 'intuitive' result that is, if you projected the local Y of the quaternion onto the X and Y axes, the angle between them is returned. If set to false though, the result is the actual yaw that will be used to implement the quaternion, which is the shortest possible path to get to the same orientation and may involve less axial rotation.

§ getYaw()

Radian ParaEngine::Quaternion::getYaw ( bool  reprojectAxis = true) const

Calculate the local yaw element of this quaternion.

Parameters
reprojectAxisBy default the method returns the 'intuitive' result that is, if you projected the local Z of the quaternion onto the X and Z axes, the angle between them is returned. If set to true though, the result is the actual yaw that will be used to implement the quaternion, which is the shortest possible path to get to the same orientation and may involve less axial rotation.

Friends And Related Function Documentation

§ operator<<

std::ostream& operator<< ( std::ostream &  o,
const Quaternion q 
)
friend

Function for writing to a stream.

Outputs "Quaternion(x, y, z, w)" with x,y,z,w being the member values of the quaternion.


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