Developer Documentation
ACG::DualQuaternionT< Scalar > Class Template Reference

DualQuaternion class for representing rigid motions in 3d. More...

#include <ACG/Math/DualQuaternionT.hh>

Public Types

typedef QuaternionT< Scalar > Quaternion
 
typedef DualQuaternionT< Scalar > DualQuaternion
 
typedef VectorT< Scalar, 3 > Vec3
 
typedef VectorT< Scalar, 4 > Vec4
 
typedef Matrix4x4T< Scalar > Matrix
 

Public Member Functions

 DualQuaternionT ()
 Default constructor ( constructs an identity dual quaternion )
 
 DualQuaternionT (const DualQuaternion &_other)
 Copy constructor.
 
 DualQuaternionT (const Quaternion &_real, const Quaternion &_dual)
 Construct from given real,dual parts.
 
 DualQuaternionT (Scalar _Rw, Scalar _Rx, Scalar _Ry, Scalar _Rz, Scalar _Dw, Scalar _Dx, Scalar _Dy, Scalar _Dz)
 Construct from 8 scalars.
 
 DualQuaternionT (Quaternion _rotation)
 Construct from a rotation given as quaternion.
 
 DualQuaternionT (const Vec3 &_translation)
 Construct from a translatation given as a vector.
 
 DualQuaternionT (const Vec3 &_translation, const Quaternion &_rotation)
 Construct from a translation+rotation.
 
 DualQuaternionT (const Matrix &_transformation)
 Construct from a rigid transformation given as matrix.
 
DualQuaternion conjugate () const
 conjugate dual quaternion
 
DualQuaternion invert () const
 invert dual quaternion
 
void normalize ()
 normalize dual quaternion
 
bool operator== (const DualQuaternion &_other) const
 dual quaternion comparison
 
bool operator!= (const DualQuaternion &_other) const
 dual quaternion comparison
 
DualQuaternion operator+ (const DualQuaternion &_other) const
 addition
 
DualQuaternionoperator+= (const DualQuaternion &_other)
 addition
 
DualQuaternion operator- (const DualQuaternion &_other) const
 substraction
 
DualQuaternionoperator-= (const DualQuaternion &_other)
 substraction
 
DualQuaternion operator* (const DualQuaternion &_q) const
 dualQuaternion * dualQuaternion
 
DualQuaternion operator* (const Scalar &_scalar) const
 dualQuaternion * scalar
 
DualQuaternionoperator*= (const DualQuaternion &_q)
 dualQuaternion *= dualQuaternion
 
Scalar & operator[] (const unsigned int &b)
 Access as one big vector.
 
Vec3 transform_point (const Vec3 &_point) const
 Transform a point with the dual quaternion. More...
 
Vec3 transform_vector (const Vec3 &_point) const
 Transform a vector with the dual quaternion. More...
 
void printInfo ()
 print some info about the DQ
 
template<typename VectorType >
DualQuaternionT< Scalar > interpolate (VectorType &_weights, const std::vector< DualQuaternion > &_dualQuaternions)
 linear interpolation of dual quaternions. Result is normalized afterwards.
 

Static Public Member Functions

static DualQuaternion identity ()
 identity dual quaternion [ R(1, 0, 0, 0), D(0,0,0,0) ]
 
static DualQuaternion zero ()
 zero dual quaternion [ R(0, 0, 0, 0), D(0,0,0,0) ]
 
template<typename VectorType >
static DualQuaternion interpolate (VectorType &_weights, const std::vector< DualQuaternion > &_dualQuaternions)
 linear interpolation of dual quaternions. Result is normalized afterwards
 

Public Attributes

Quaternion real_
 real and dual quaternion parts
 
Quaternion dual_
 

Detailed Description

template<class Scalar>
class ACG::DualQuaternionT< Scalar >

DualQuaternion class for representing rigid motions in 3d.

This is an implementation of:

techreport{kavan-06-dual, author = "Ladislav Kavan and Steven Collins and Carol O'Sullivan and Jiri Zara", series = "Technical report TCD-CS-2006-46, Trinity College Dublin", title = "{D}ual {Q}uaternions for {R}igid {T}ransformation {B}lending", url = "http://www.cgg.cvut.cz/~kavanl1/", year = "2006" }

Definition at line 90 of file DualQuaternionT.hh.

Member Function Documentation

template<typename Scalar >
VectorT< Scalar, 3 > ACG::DualQuaternionT< Scalar >::transform_point ( const Vec3 _point) const

Transform a point with the dual quaternion.

transform a given point with this dual quaternion

TODO check if this is a unit dual quaternion

Definition at line 374 of file DualQuaternionT.cc.

template<typename Scalar >
VectorT< Scalar, 3 > ACG::DualQuaternionT< Scalar >::transform_vector ( const Vec3 _point) const

Transform a vector with the dual quaternion.

transform a given point with this dual quaternion

TODO check if this is a unit dual quaternion

Definition at line 403 of file DualQuaternionT.cc.


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