Developer Documentation
|
DualQuaternion class for representing rigid motions in 3d. More...
#include <OpenFlipper/libs_required/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 | |
DualQuaternion & | operator+= (const DualQuaternion &_other) |
addition | |
DualQuaternion | operator- (const DualQuaternion &_other) const |
substraction | |
DualQuaternion & | operator-= (const DualQuaternion &_other) |
substraction | |
DualQuaternion | operator* (const DualQuaternion &_q) const |
dualQuaternion * dualQuaternion | |
DualQuaternion | operator* (const Scalar &_scalar) const |
dualQuaternion * scalar | |
DualQuaternion & | operator*= (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_ |
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 80 of file DualQuaternionT.hh.
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 366 of file DualQuaternionT_impl.hh.
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 395 of file DualQuaternionT_impl.hh.