26 #ifndef __DualQuaternion_hh__
27 #define __DualQuaternion_hh__
29 #include <bias_config.h>
31 #include <Base/Geometry/Quaternion.hh>
32 #include <Base/Geometry/DualQuaternionOperators.hh>
33 #include <Base/Geometry/PoseParametrization.hh>
34 #include <Base/Geometry/RMatrixBase.hh>
35 #include <Base/Math/Matrix.hh>
36 #include <Base/Math/Vector.hh>
37 #include <Base/Math/Vector3.hh>
66 template<
class QUAT_TYPE>
91 inline void MakeUnique();
95 inline void Normalize();
99 inline void GetDualNorm(QUAT_TYPE &r, QUAT_TYPE &d)
const;
111 inline void Mult(
const QUAT_TYPE &scalar);
113 inline void Mult(
const QUAT_TYPE &scalar,
116 inline void Div(
const QUAT_TYPE &scalar);
118 inline void Div(
const QUAT_TYPE &scalar,
136 inline void SetIdentity();
175 inline void SetFromRigidMotion(
const RMatrixBase &rotation,
180 { real = r.real; dual = r.dual;
return *
this; }
184 { Add(r);
return *
this; }
188 { Sub(r);
return *
this; }
192 { Mult(scalar);
return *
this; }
196 { Div(scalar);
return *
this; }
200 { Mult(r);
return *
this; }
204 { Mult(r.
Inverse());
return *
this; }
208 return (real == r.real) && (dual == r.dual);
212 {
return !(*
this == r); }
217 const QUAT_TYPE &t)
const;
223 const QUAT_TYPE &t)
const;
259 bool useOtherAngle =
false,
260 bool useOtherPitch =
false);
270 bool useFirstAngle =
false,
271 bool useFirstPitch =
false);
275 #include <Base/Geometry/DualQuaternionInl.hh>
279 #endif // __DualQuaternion_hh__
class for column vectors with arbitrary size
BIASMathBase_EXPORT Vector2< T > & operator/=(Vector2< T > &vec, const Vector2< T > &argvec)
elementwise division
class representing rigid motion by dual quaternions
DualQuaternion< QUAT_TYPE > Inverse() const
Slim class bundeling pose parametrization and associated covariance matrix.
Vector2< T > & operator-=(Vector2< T > &vec, const Vector2< T > &argvec)
sub operator for two Vectors
BIASMathBase_EXPORT Vector2< T > & operator+=(Vector2< T > &vec, const Vector2< T > &argvec)
add operator for two Vectors
void Add(const DualQuaternion< QUAT_TYPE > &r, DualQuaternion< QUAT_TYPE > &res) const
Vector2< T > & operator*=(Vector2< T > &vec, const T &scalar)
Multiplication operator with scalar argument.
class Vector3 contains a Vector of fixed dim.
matrix class with arbitrary size, indexing is row major.
Implements a 3D rotation matrix.