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

Static Public Member Functions

static double dot (const DtQuat &q1, const DtQuat &q2)
 computes the dot product of 2 quaternions More...
 
static DtQuat lerp (const DtQuat &q1, const DtQuat &q2, double t)
 linear quaternion interpolation More...
 
static DtQuat slerp (const DtQuat &q1, const DtQuat &q2, double t)
 spherical linear interpolation More...
 
static DtQuat slerpNoInvert (const DtQuat &q1, const DtQuat &q2, double t)
 This version of slerp, used by squad, does not check for theta > 90. More...
 
static DtQuat squad (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 spherical cubic interpolation More...
 
static DtQuat bezier (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 Shoemake-Bezier interpolation using De Castlejau algorithm. More...
 
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. More...
 
static DtQuat from_axis_angle (const DtVector &axis, double angle)
 converts from a normalized axis - angle pair rotation to a quaternion More...
 

Public Attributes

DtVector xyz
 the imaginary components More...
 
double w
 the real component More...
 

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 Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)