VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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

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

computes the dot product of 2 quaternions

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

linear quaternion interpolation

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

spherical linear interpolation

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

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

spherical cubic interpolation

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

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

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

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)

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

returns the euler angles from a rotation quaternion

Member Data Documentation

DtVector makVrv::DtQuat::xyz

the imaginary components

double makVrv::DtQuat::w

the real component


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

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)