VR-Forces 4.0.4 Class Documentation
Public Member Functions | Static Public Member Functions | Public Attributes
makVrv::DtQuat Class Reference

A utility Quaternion class. More...

List of all members.

Public Member Functions

 DtQuat ()
 constructors
 DtQuat (double x, double y, double z, double w)
 DtQuat (const DtVector &i, double real)
 DtQuat (double theta_z, double theta_y, double theta_x)
 from 3 euler angles
 DtQuat (const DtVector &angles)
 from 3 euler angles
void set (double x, double y, double z, double w)
 Set the quat.
DtQuatoperator= (const DtQuat &q)
 basic operations
DtQuat operator+ (const DtQuat &q) const
DtQuat operator- (const DtQuat &q) const
DtQuat operator* (const DtQuat &q) const
DtQuat operator/ (const DtQuat &q) const
DtQuat operator* (double scale) const
DtQuat operator/ (double scale) const
DtQuat operator- () const
const DtQuatoperator+= (const DtQuat &q)
const DtQuatoperator-= (const DtQuat &q)
const DtQuatoperator*= (const DtQuat &q)
const DtQuatoperator*= (double scale)
const DtQuatoperator/= (double scale)
double length () const
 gets the length of this quaternion
double length_squared () const
 gets the squared length of this quaternion
void normalize ()
 normalizes this quaternion
DtQuat normalized () const
 returns the normalized version of this quaternion
void conjugate ()
 computes the conjugate of this quaternion
void invert ()
 inverts this quaternion
DtQuat log () const
 returns the logarithm of a quaternion = v*a where q = [cos(a),v*sin(a)]
DtQuat exp () const
 returns e^quaternion = exp(v*a) = [cos(a),vsin(a)]
void getMatrix4 (double matrix[16]) const
 casting to a 4x4 isomorphic matrix for right multiplication with vector
void getMatrix3 (double matrix[9]) const
 Get a 3x3 rotation matrix.
void to_axis_angle (DtVector &axis, double &angle) const
 returns the axis and angle of this unit quaternion
DtVector rotate (const DtVector &v) const
 rotates v by this quaternion (quaternion must be unit)
DtVector euler_angles () const
 returns the euler angles from a rotation quaternion

Static Public Member Functions

static double dot (const DtQuat &q1, const DtQuat &q2)
 computes the dot product of 2 quaternions
static DtQuat lerp (const DtQuat &q1, const DtQuat &q2, double t)
 linear quaternion interpolation
static DtQuat slerp (const DtQuat &q1, const DtQuat &q2, double t)
 spherical linear interpolation
static DtQuat slerpNoInvert (const DtQuat &q1, const DtQuat &q2, double t)
 This version of slerp, used by squad, does not check for theta > 90.
static DtQuat squad (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 spherical cubic interpolation
static DtQuat bezier (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 Shoemake-Bezier interpolation using De Castlejau algorithm.
static DtQuat spline (const DtQuat &qnm1, const DtQuat &qn, const DtQuat &qnp1)
 Given 3 quaternions, qn-1,qn and qn+1, calculate a control point to be used in spline interpolation.
static DtQuat from_axis_angle (const DtVector &axis, double angle)
 converts from a normalized axis - angle pair rotation to a quaternion

Public Attributes

DtVector xyz
 the imaginary components
double w
 the real component

Detailed Description

A utility Quaternion class.


Constructor & Destructor Documentation

makVrv::DtQuat::DtQuat ( ) [inline]

constructors

makVrv::DtQuat::DtQuat ( double  x,
double  y,
double  z,
double  w 
) [inline]
makVrv::DtQuat::DtQuat ( const DtVector i,
double  real 
) [inline]
makVrv::DtQuat::DtQuat ( double  theta_z,
double  theta_y,
double  theta_x 
) [inline]

from 3 euler angles

makVrv::DtQuat::DtQuat ( const DtVector angles) [inline]

from 3 euler angles


Member Function Documentation

void makVrv::DtQuat::set ( double  x,
double  y,
double  z,
double  w 
) [inline]

Set the quat.

DtQuat& makVrv::DtQuat::operator= ( const DtQuat q) [inline]

basic operations

DtQuat makVrv::DtQuat::operator+ ( const DtQuat q) const [inline]
DtQuat makVrv::DtQuat::operator- ( const DtQuat q) const [inline]
DtQuat makVrv::DtQuat::operator* ( const DtQuat q) const [inline]
DtQuat makVrv::DtQuat::operator/ ( const DtQuat q) const [inline]
DtQuat makVrv::DtQuat::operator* ( double  scale) const [inline]
DtQuat makVrv::DtQuat::operator/ ( double  scale) const [inline]
DtQuat makVrv::DtQuat::operator- ( ) const [inline]
const DtQuat& makVrv::DtQuat::operator+= ( const DtQuat q) [inline]
const DtQuat& makVrv::DtQuat::operator-= ( const DtQuat q) [inline]
const DtQuat& makVrv::DtQuat::operator*= ( const DtQuat q) [inline]
const DtQuat& makVrv::DtQuat::operator*= ( double  scale) [inline]
const DtQuat& makVrv::DtQuat::operator/= ( double  scale) [inline]
double makVrv::DtQuat::length ( ) const [inline]

gets the length of this quaternion

double makVrv::DtQuat::length_squared ( ) const [inline]

gets the squared length of this quaternion

void makVrv::DtQuat::normalize ( ) [inline]

normalizes this quaternion

DtQuat makVrv::DtQuat::normalized ( ) const [inline]

returns the normalized version of this quaternion

void makVrv::DtQuat::conjugate ( ) [inline]

computes the conjugate of this quaternion

void makVrv::DtQuat::invert ( ) [inline]

inverts this quaternion

DtQuat makVrv::DtQuat::log ( ) const [inline]

returns the logarithm of a quaternion = v*a where q = [cos(a),v*sin(a)]

DtQuat makVrv::DtQuat::exp ( ) const [inline]

returns e^quaternion = exp(v*a) = [cos(a),vsin(a)]

void makVrv::DtQuat::getMatrix4 ( double  matrix[16]) const [inline]

casting to a 4x4 isomorphic matrix for right multiplication with vector

void makVrv::DtQuat::getMatrix3 ( double  matrix[9]) const [inline]

Get a 3x3 rotation matrix.

Warning:
The matrix will be invalid if the Quat is not normalized.
static double makVrv::DtQuat::dot ( const DtQuat q1,
const DtQuat q2 
) [inline, static]

computes the dot product of 2 quaternions

static DtQuat makVrv::DtQuat::lerp ( const DtQuat q1,
const DtQuat q2,
double  t 
) [inline, static]

linear quaternion interpolation

static DtQuat makVrv::DtQuat::slerp ( const DtQuat q1,
const DtQuat q2,
double  t 
) [inline, static]

spherical linear interpolation

static DtQuat makVrv::DtQuat::slerpNoInvert ( const DtQuat q1,
const DtQuat q2,
double  t 
) [inline, static]

This version of slerp, used by squad, does not check for theta > 90.

static DtQuat makVrv::DtQuat::squad ( const DtQuat q1,
const DtQuat q2,
const DtQuat a,
const DtQuat b,
double  t 
) [inline, static]

spherical cubic interpolation

static DtQuat makVrv::DtQuat::bezier ( const DtQuat q1,
const DtQuat q2,
const DtQuat a,
const DtQuat b,
double  t 
) [inline, static]

Shoemake-Bezier interpolation using De Castlejau algorithm.

static DtQuat makVrv::DtQuat::spline ( const DtQuat qnm1,
const DtQuat qn,
const DtQuat qnp1 
) [inline, static]

Given 3 quaternions, qn-1,qn and qn+1, calculate a control point to be used in spline interpolation.

static DtQuat makVrv::DtQuat::from_axis_angle ( const DtVector axis,
double  angle 
) [inline, static]

converts from a normalized axis - angle pair rotation to a quaternion

void makVrv::DtQuat::to_axis_angle ( DtVector axis,
double &  angle 
) const [inline]

returns the axis and angle of this unit quaternion

DtVector makVrv::DtQuat::rotate ( const DtVector v) const [inline]

rotates v by this quaternion (quaternion must be unit)

returns the euler angles from a rotation quaternion


Member Data Documentation

the imaginary components

the real component


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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)