VR-Forces Developer's Guide
 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 | Friends
makVrv::DtQuat Class Reference

A utility Quaternion class.

Public Member Functions

 DtQuat ()
 
 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)
 
 DtQuat (const DtVector &angles)
 
void set (double x, double y, double z, double w)
 
DtQuatoperator= (const DtQuat &q)
 
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
 
double length_squared () const
 
void normalize ()
 
DtQuat normalized () const
 
void conjugate ()
 
void invert ()
 
DtQuat log () const
 
DtQuat exp () const
 
void getMatrix4 (double matrix[16]) const
 
void getMatrix3 (double matrix[9]) const
 
void to_axis_angle (DtVector &axis, double &angle) const
 
DtVector rotate (const DtVector &v) const
 
DtVector euler_angles () const
 

Static Public Member Functions

static double dot (const DtQuat &q1, const DtQuat &q2)
 
static DtQuat lerp (const DtQuat &q1, const DtQuat &q2, double t)
 
static DtQuat slerp (const DtQuat &q1, const DtQuat &q2, double t)
 
static DtQuat slerpNoInvert (const DtQuat &q1, const DtQuat &q2, double t)
 
static DtQuat squad (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 
static DtQuat bezier (const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
 
static DtQuat spline (const DtQuat &qnm1, const DtQuat &qn, const DtQuat &qnp1)
 
static DtQuat from_axis_angle (const DtVector &axis, double angle)
 

Public Attributes

DtVector xyz
 
double w
 

Friends

std::ostream & operator<< (std::ostream &os, const DtQuat &)
 

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 Note: This takes Z Y X, not xyz.

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

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const DtQuat  
)
friend

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 Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)