VR-Vantage API Documentation
List of all members | Public Member Functions | Static Public Member Functions | Public Attributes
makVrv::DtQuat Class Reference

A utility Quaternion class. More...

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
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

References w, and xyz.

makVrv::DtQuat::DtQuat ( const DtVector &  angles)
inline

from 3 euler angles

References w, and xyz.

Member Function Documentation

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

Set the quat.

References w, and xyz.

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

basic operations

References w, and xyz.

DtQuat makVrv::DtQuat::operator+ ( const DtQuat q) const
inline

References DtQuat(), w, and xyz.

DtQuat makVrv::DtQuat::operator- ( const DtQuat q) const
inline

References DtQuat(), w, and xyz.

DtQuat makVrv::DtQuat::operator* ( const DtQuat q) const
inline
DtQuat makVrv::DtQuat::operator/ ( const DtQuat q) const
inline

References invert().

DtQuat makVrv::DtQuat::operator* ( double  scale) const
inline

References DtQuat(), w, and xyz.

DtQuat makVrv::DtQuat::operator/ ( double  scale) const
inline

References DtQuat(), w, and xyz.

DtQuat makVrv::DtQuat::operator- ( ) const
inline

References DtQuat(), w, and xyz.

const DtQuat & makVrv::DtQuat::operator+= ( const DtQuat q)
inline

References w, and xyz.

const DtQuat & makVrv::DtQuat::operator-= ( const DtQuat q)
inline

References w, and xyz.

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

References vrvControlToolkit::DtDistSqr(), w, and xyz.

Referenced by normalize(), and normalized().

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

gets the squared length of this quaternion

References vrvControlToolkit::DtDistSqr(), w, and xyz.

Referenced by invert().

void makVrv::DtQuat::normalize ( )
inline

normalizes this quaternion

References length().

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

returns the normalized version of this quaternion

References length().

Referenced by lerp().

void makVrv::DtQuat::conjugate ( )
inline

computes the conjugate of this quaternion

References vrvControlToolkit::DtVecNeg(), and xyz.

Referenced by invert(), and rotate().

void makVrv::DtQuat::invert ( )
inline

inverts this quaternion

References conjugate(), and length_squared().

Referenced by operator/().

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

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

References DtQuat(), w, and xyz.

Referenced by spline().

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

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

References DtQuat(), and xyz.

Referenced by spline().

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

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

References w, and xyz.

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.

References w, and xyz.

double makVrv::DtQuat::dot ( const DtQuat q1,
const DtQuat q2 
)
inlinestatic

computes the dot product of 2 quaternions

References vrvControlToolkit::DtDistSqr(), w, and xyz.

Referenced by slerp(), and slerpNoInvert().

DtQuat makVrv::DtQuat::lerp ( const DtQuat q1,
const DtQuat q2,
double  t 
)
inlinestatic

linear quaternion interpolation

References normalized().

Referenced by slerp(), and slerpNoInvert().

DtQuat makVrv::DtQuat::slerp ( const DtQuat q1,
const DtQuat q2,
double  t 
)
inlinestatic

spherical linear interpolation

References dot(), and lerp().

DtQuat makVrv::DtQuat::slerpNoInvert ( const DtQuat q1,
const DtQuat q2,
double  t 
)
inlinestatic

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

References dot(), and lerp().

Referenced by bezier(), and squad().

DtQuat makVrv::DtQuat::squad ( const DtQuat q1,
const DtQuat q2,
const DtQuat a,
const DtQuat b,
double  t 
)
inlinestatic

spherical cubic interpolation

References slerpNoInvert().

DtQuat makVrv::DtQuat::bezier ( const DtQuat q1,
const DtQuat q2,
const DtQuat a,
const DtQuat b,
double  t 
)
inlinestatic

Shoemake-Bezier interpolation using De Castlejau algorithm.

References slerpNoInvert().

DtQuat makVrv::DtQuat::spline ( const DtQuat qnm1,
const DtQuat qn,
const DtQuat qnp1 
)
inlinestatic

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

References exp(), log(), w, and xyz.

DtQuat makVrv::DtQuat::from_axis_angle ( const DtVector &  axis,
double  angle 
)
inlinestatic

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

References DtQuat().

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

returns the axis and angle of this unit quaternion

References w, and xyz.

DtVector makVrv::DtQuat::rotate ( const DtVector &  v) const
inline

rotates v by this quaternion (quaternion must be unit)

References conjugate().

DtVector makVrv::DtQuat::euler_angles ( ) const
inline

returns the euler angles from a rotation quaternion

References w, and xyz.

Member Data Documentation

DtVector makVrv::DtQuat::xyz
double makVrv::DtQuat::w

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


Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)