Basic Image AlgorithmS Library
2.8.0
|
class representing rigid motion by dual quaternions More...
#include <Base/Geometry/DualQuaternion.hh>
Public Member Functions | |
void | Add (const DualQuaternion< QUAT_TYPE > &r) |
void | Add (const DualQuaternion< QUAT_TYPE > &r, DualQuaternion< QUAT_TYPE > &res) const |
void | Div (const QUAT_TYPE &scalar) |
void | Div (const QUAT_TYPE &scalar, DualQuaternion< QUAT_TYPE > &res) const |
DualQuaternion () | |
DualQuaternion (const DualQuaternion< QUAT_TYPE > &d) | |
DualQuaternion (const Quaternion< QUAT_TYPE > &q, const Quaternion< QUAT_TYPE > &p) | |
void | EnforceRigidCouplingConstraint (DualQuaternion< QUAT_TYPE > &other, bool useOtherAngle=false, bool useOtherPitch=false) |
Enforce rigid coupling constraint for this and the other given dual quaternion (equal rotation angle and equal motion pitch/equal real and dual scalar part for both). More... | |
void | GetDualNorm (QUAT_TYPE &r, QUAT_TYPE &d) const |
Computes dual quaternion norm which is a dual number consisting of real part r and dual part d. More... | |
Quaternion< QUAT_TYPE > | GetDualPart () const |
Matrix< QUAT_TYPE > | GetLeftMultMatrix () const |
PoseParametrization | GetPoseParametrization () const |
Quaternion< QUAT_TYPE > | GetRealPart () const |
Matrix< QUAT_TYPE > | GetRightMultMatrix () const |
void | GetRigidMotion (Quaternion< QUAT_TYPE > &rotation, Vector3< QUAT_TYPE > &translation) const |
void | GetRigidMotion (RMatrixBase &rotation, Vector3< QUAT_TYPE > &translation) const |
Vector< QUAT_TYPE > | GetVector () const |
DualQuaternion< QUAT_TYPE > | Interpolate (const DualQuaternion< QUAT_TYPE > &to, const QUAT_TYPE &t) const |
DualQuaternion< QUAT_TYPE > | InterpolateLinear (const DualQuaternion< QUAT_TYPE > &to, const QUAT_TYPE &t) const |
DualQuaternion< QUAT_TYPE > | Inverse () const |
void | Invert () |
void | MakeUnique () |
Make dual quaternion representation unique with respect to the rigid motion it represents. More... | |
void | Mult (const QUAT_TYPE &scalar) |
void | Mult (const QUAT_TYPE &scalar, DualQuaternion< QUAT_TYPE > &res) const |
void | Mult (const DualQuaternion< QUAT_TYPE > &r) |
void | Mult (const DualQuaternion< QUAT_TYPE > &r, DualQuaternion< QUAT_TYPE > &res) const |
void | MultLeft (const DualQuaternion< QUAT_TYPE > &l) |
void | MultLeft (const DualQuaternion< QUAT_TYPE > &l, DualQuaternion< QUAT_TYPE > &res) const |
void | MultVec (const Vector3< QUAT_TYPE > &vec, Vector3< QUAT_TYPE > &res) const |
Vector3< QUAT_TYPE > | MultVec (const Vector3< QUAT_TYPE > &vec) const |
void | Normalize () |
Scales dual quaternion to unit length, i.e. More... | |
bool | operator!= (const DualQuaternion< QUAT_TYPE > &r) const |
DualQuaternion< QUAT_TYPE > & | operator*= (const QUAT_TYPE &scalar) |
DualQuaternion< QUAT_TYPE > & | operator*= (const DualQuaternion< QUAT_TYPE > &r) |
DualQuaternion< QUAT_TYPE > & | operator+= (const DualQuaternion< QUAT_TYPE > &r) |
DualQuaternion< QUAT_TYPE > & | operator-= (const DualQuaternion< QUAT_TYPE > &r) |
DualQuaternion< QUAT_TYPE > & | operator/= (const QUAT_TYPE &scalar) |
DualQuaternion< QUAT_TYPE > & | operator/= (const DualQuaternion< QUAT_TYPE > &r) |
DualQuaternion< QUAT_TYPE > & | operator= (const DualQuaternion< QUAT_TYPE > &r) |
bool | operator== (const DualQuaternion< QUAT_TYPE > &r) const |
void | Set (const Quaternion< QUAT_TYPE > &q, const Quaternion< QUAT_TYPE > &p) |
void | SetDualPart (const Quaternion< QUAT_TYPE > &p) |
void | SetFromPoseParametrization (const PoseParametrization ¶ms) |
void | SetFromRigidMotion (const Quaternion< QUAT_TYPE > &rotation, const Vector3< QUAT_TYPE > &translation) |
void | SetFromRigidMotion (const RMatrixBase &rotation, const Vector3< QUAT_TYPE > &translation) |
void | SetIdentity () |
void | SetRealPart (const Quaternion< QUAT_TYPE > &q) |
void | Sub (const DualQuaternion< QUAT_TYPE > &r) |
void | Sub (const DualQuaternion< QUAT_TYPE > &r, DualQuaternion< QUAT_TYPE > &res) const |
~DualQuaternion () | |
Static Public Member Functions | |
static void | EnforceRigidCouplingConstraint (std::vector< DualQuaternion< QUAT_TYPE > > &quats, bool useFirstAngle=false, bool useFirstPitch=false) |
Enforce rigid coupling constraint for all dual quaternions in given vector. More... | |
Related Functions | |
(Note that these are not member functions.) | |
template<class T > | |
DualQuaternion< T > | operator* (const DualQuaternion< T > &l, const DualQuaternion< T > &r) |
template<class T > | |
DualQuaternion< T > | operator/ (const DualQuaternion< T > &l, const DualQuaternion< T > &r) |
class representing rigid motion by dual quaternions
Dual quaternions can be used to represent a rigid motion in 3d space consisting of a rotation and a translation.
A dual quaternion can be described as consisting of a real part q and a dual part p which are both real quaternions. The real part q simply describes the rotational part of the motion (see Quaternion). The dual part p describes the translational part decomposed into a translation orthogonal to the rotation axis (related to the "moment") and the amount of translation along the rotation axis ("pitch").
Dual quaternions describing rigid motion are constrained to have a unit real part and orthogonal real and dual parts.
See for example K. Daniilidis: Hand-Eye Calibration Using Dual Quaternions (1999) for further information on dual quaternions and their relation to screw theory.
Definition at line 67 of file DualQuaternion.hh.
|
inline |
Definition at line 28 of file DualQuaternion.hh.
|
inline |
Definition at line 34 of file DualQuaternion.hh.
|
inline |
Definition at line 41 of file DualQuaternion.hh.
|
inline |
Definition at line 83 of file DualQuaternion.hh.
|
inline |
Definition at line 92 of file DualQuaternion.hh.
Referenced by BIAS::operator+().
|
inline |
Definition at line 99 of file DualQuaternion.hh.
|
inline |
Definition at line 137 of file DualQuaternion.hh.
Referenced by BIAS::operator/().
|
inline |
Definition at line 144 of file DualQuaternion.hh.
void DualQuaternion::EnforceRigidCouplingConstraint | ( | DualQuaternion< QUAT_TYPE > & | other, |
bool | useOtherAngle = false , |
||
bool | useOtherPitch = false |
||
) |
Enforce rigid coupling constraint for this and the other given dual quaternion (equal rotation angle and equal motion pitch/equal real and dual scalar part for both).
Computes direct simple interpolation of both dual quaternion where the scalar parts of the real and dual quaternion parts of the resulting dual quaternion are identical. This solution can be used as initial guess for numerical refinement.
in/out] | other Dual quaternion to enforce rigid coupling constraint with | |
[in] | useOtherAngle | Use rotation angle (= real scalar part) of other dual quaternion instead of interpolating both |
[in] | useOtherPitch | Use motion pitch (= dual scalar part) of other dual quaternion instead of interpolating both |
Definition at line 173 of file DualQuaternion.cpp.
References BIAS::DualQuaternion< QUAT_TYPE >::MakeUnique().
|
static |
Enforce rigid coupling constraint for all dual quaternions in given vector.
in/out] | quats Dual quaternions to enforce rigid coupling constraint for | |
[in] | useFirstAngle | Use rotation angle (= real scalar part) of first dual quaternion instead of interpolating all |
[in] | useFirstPitch | Use motion pitch (= dual scalar part) of first dual quaternion instead of interpolating all |
Definition at line 225 of file DualQuaternion.cpp.
|
inline |
Computes dual quaternion norm which is a dual number consisting of real part r and dual part d.
Definition at line 83 of file DualQuaternion.hh.
|
inline |
Definition at line 234 of file DualQuaternion.hh.
Matrix< QUAT_TYPE > DualQuaternion::GetLeftMultMatrix | ( | ) | const |
Definition at line 99 of file DualQuaternion.cpp.
References BIAS::MatrixZero.
PoseParametrization DualQuaternion::GetPoseParametrization | ( | ) | const |
Definition at line 65 of file DualQuaternion.cpp.
References BIAS::PoseParametrization::Set().
|
inline |
Definition at line 228 of file DualQuaternion.hh.
Matrix< QUAT_TYPE > DualQuaternion::GetRightMultMatrix | ( | ) | const |
Definition at line 115 of file DualQuaternion.cpp.
References BIAS::MatrixZero.
void DualQuaternion::GetRigidMotion | ( | Quaternion< QUAT_TYPE > & | rotation, |
Vector3< QUAT_TYPE > & | translation | ||
) | const |
Definition at line 35 of file DualQuaternion.cpp.
References BIAS::Quaternion< T >::Mult(), and BIAS::Vector3< T >::Set().
|
inline |
Definition at line 252 of file DualQuaternion.hh.
|
inline |
Definition at line 240 of file DualQuaternion.hh.
DualQuaternion< QUAT_TYPE > DualQuaternion::Interpolate | ( | const DualQuaternion< QUAT_TYPE > & | to, |
const QUAT_TYPE & | t | ||
) | const |
Definition at line 153 of file DualQuaternion.cpp.
References BIAS::Quaternion< T >::Interpolate().
DualQuaternion< QUAT_TYPE > DualQuaternion::InterpolateLinear | ( | const DualQuaternion< QUAT_TYPE > & | to, |
const QUAT_TYPE & | t | ||
) | const |
Definition at line 132 of file DualQuaternion.cpp.
References BIAS::Quaternion< T >::InterpolateLinear(), and BIAS::DualQuaternion< QUAT_TYPE >::Normalize().
|
inline |
Definition at line 56 of file DualQuaternion.hh.
Referenced by BIAS::DualQuaternion< QUAT_TYPE >::operator/(), and BIAS::DualQuaternion< QUAT_TYPE >::operator/=().
|
inline |
Definition at line 49 of file DualQuaternion.hh.
|
inline |
Make dual quaternion representation unique with respect to the rigid motion it represents.
Definition at line 64 of file DualQuaternion.hh.
Referenced by BIAS::DualQuaternion< QUAT_TYPE >::EnforceRigidCouplingConstraint().
|
inline |
Definition at line 122 of file DualQuaternion.hh.
Referenced by BIAS::operator*(), BIAS::DualQuaternion< QUAT_TYPE >::operator*(), and BIAS::DualQuaternion< QUAT_TYPE >::operator/().
|
inline |
Definition at line 129 of file DualQuaternion.hh.
|
inline |
Definition at line 154 of file DualQuaternion.hh.
|
inline |
Definition at line 161 of file DualQuaternion.hh.
|
inline |
Definition at line 169 of file DualQuaternion.hh.
|
inline |
Definition at line 176 of file DualQuaternion.hh.
|
inline |
Definition at line 184 of file DualQuaternion.hh.
|
inline |
Definition at line 191 of file DualQuaternion.hh.
|
inline |
Scales dual quaternion to unit length, i.e.
norm of real part equals 1 and real part is orthogonal to dual part.
Definition at line 74 of file DualQuaternion.hh.
Referenced by BIAS::DualQuaternion< QUAT_TYPE >::InterpolateLinear().
|
inline |
Definition at line 211 of file DualQuaternion.hh.
|
inline |
Definition at line 191 of file DualQuaternion.hh.
|
inline |
Definition at line 199 of file DualQuaternion.hh.
|
inline |
Definition at line 183 of file DualQuaternion.hh.
|
inline |
Definition at line 187 of file DualQuaternion.hh.
|
inline |
Definition at line 195 of file DualQuaternion.hh.
|
inline |
Definition at line 203 of file DualQuaternion.hh.
References BIAS::DualQuaternion< QUAT_TYPE >::Inverse().
|
inline |
Definition at line 179 of file DualQuaternion.hh.
|
inline |
Definition at line 206 of file DualQuaternion.hh.
|
inline |
Definition at line 208 of file DualQuaternion.hh.
|
inline |
Definition at line 222 of file DualQuaternion.hh.
void DualQuaternion::SetFromPoseParametrization | ( | const PoseParametrization & | params | ) |
Definition at line 84 of file DualQuaternion.cpp.
References BIAS::PoseParametrization::GetOrientation(), and BIAS::PoseParametrization::GetPosition().
void DualQuaternion::SetFromRigidMotion | ( | const Quaternion< QUAT_TYPE > & | rotation, |
const Vector3< QUAT_TYPE > & | translation | ||
) |
Definition at line 49 of file DualQuaternion.cpp.
References BIAS::Vector3< T >::CrossProduct(), and BIAS::Vector3< T >::ScalarProduct().
|
inline |
Definition at line 265 of file DualQuaternion.hh.
|
inline |
Definition at line 201 of file DualQuaternion.hh.
|
inline |
Definition at line 216 of file DualQuaternion.hh.
|
inline |
Definition at line 107 of file DualQuaternion.hh.
Referenced by BIAS::operator-().
|
inline |
Definition at line 114 of file DualQuaternion.hh.
|
related |
what it stands for (wraps Mult())
Definition at line 79 of file DualQuaternionOperators.hh.
References BIAS::DualQuaternion< QUAT_TYPE >::Mult().
|
related |
what it stands for (wraps Mult() and Inverse())
Definition at line 91 of file DualQuaternionOperators.hh.
References BIAS::DualQuaternion< QUAT_TYPE >::Inverse(), and BIAS::DualQuaternion< QUAT_TYPE >::Mult().