26 #ifndef OPENCV_CORE_DUALQUATERNION_HPP
27 #define OPENCV_CORE_DUALQUATERNION_HPP
29 #include <opencv2/core/quaternion.hpp>
30 #include <opencv2/core/affine.hpp>
36 template <
typename _Tp>
class DualQuat;
145 template <
typename _Tp>
148 using value_type = _Tp;
151 static constexpr _Tp CV_DUAL_QUAT_EPS = (_Tp)1.e-6;
158 DualQuat(
const _Tp w,
const _Tp
x,
const _Tp
y,
const _Tp z,
const _Tp w_,
const _Tp x_,
const _Tp y_,
const _Tp z_);
165 _Tp
w,
x,
y, z, w_, x_, y_, z_;
301 template <
typename T>
407 template <
typename T>
438 template <
typename T>
465 template <
typename T>
485 template <
typename T>
500 template <
typename T>
868 template <
typename T>
883 template <
typename T>
908 template <
typename T>
923 template <
typename T>
938 template <
typename T>
963 template <
typename T>
966 template <
typename S>
977 #include "dualquaternion.inl.hpp"
Definition: dualquaternion.hpp:146
DualQuat(const _Tp w, const _Tp x, const _Tp y, const _Tp z, const _Tp w_, const _Tp x_, const _Tp y_, const _Tp z_)
create from eight same type numbers.
DualQuat(const Vec< _Tp, 8 > &q)
create from a double or float vector.
Quat< _Tp > & operator/=(const _Tp s)
Division assignment operator of a dual quaternions and a scalar. It divides left operand with the rig...
static DualQuat< _Tp > gdqblend(const Vec< DualQuat< _Tp >, cn > &dualquat, InputArray weights, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
The generalized Dual Quaternion linear Blending works for more than two rigid transformations....
DualQuat< _Tp > & operator/=(const DualQuat< _Tp > &)
Division assignment operator of two dual quaternions p and q; It divides left operand with the right ...
DualQuat< _Tp > operator/(const _Tp s) const
Division operator of a dual quaternions and a scalar. It divides left operand with the right operand ...
DualQuat< _Tp > power(const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of where p is a dual quaternion. This could be calculated as:
DualQuat< _Tp > operator/(const DualQuat< _Tp > &) const
Division operator of two dual quaternions p and q. Divides left hand operand by right hand operand.
DualQuat< _Tp > & operator*=(const DualQuat< _Tp > &)
Multiplication assignment operator of two quaternions. It multiplies right operand with the left oper...
DualQuat< _Tp > operator-(const DualQuat< _Tp > &) const
Subtraction operator of two dual quaternions p and q. It returns a new dual quaternion that each valu...
DualQuat< _Tp > operator*=(const _Tp s)
Multiplication assignment operator of a quaternions and a scalar. It multiplies right operand with th...
DualQuat< _Tp > power(const DualQuat< _Tp > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of where p and q are dual quaternions. This could be calculated as:
_Tp w
Definition: dualquaternion.hpp:165
Template class for small matrices whose type and size are known at compilation time.
Definition: matx.hpp:100
Definition: quaternion.hpp:211
Template class for short numerical vectors, a partial case of Matx.
Definition: matx.hpp:369
InputArrayOfArrays InputArrayOfArrays InputOutputArray InputOutputArray InputOutputArray InputOutputArray Size InputOutputArray InputOutputArray T
Definition: calib3d.hpp:1867
InputArrayOfArrays InputArrayOfArrays InputOutputArray InputOutputArray InputOutputArray InputOutputArray Size InputOutputArray R
Definition: calib3d.hpp:1867
Vec< _Tp, cn > normalize(const Vec< _Tp, cn > &v)
Definition: matx.inl.hpp:952
static double norm(const Matx< _Tp, m, n > &M)
static bool operator==(const Matx< _Tp, m, n > &a, const Matx< _Tp, m, n > &b)
CV__DEBUG_NS_END typedef const _InputArray & InputArray
Definition: mat.hpp:442
const CvArr * angle
Definition: core_c.h:1194
const CvArr CvArr * x
Definition: core_c.h:1195
const CvArr * y
Definition: core_c.h:1187
CV_INLINE v_reg< _Tp, n > & operator-=(v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
CV_INLINE v_reg< _Tp, n > & operator+=(v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
#define CV_EXPORTS
Definition: cvdef.h:435
QuatAssumeType
Unit quaternion flag.
Definition: quaternion.hpp:39
std::ostream & operator<<(std::ostream &, const DualQuat< _Tp > &)
@ QUAT_ASSUME_NOT_UNIT
Definition: quaternion.hpp:46
"black box" representation of the file storage associated with a file on disk.
Definition: calib3d.hpp:441
DualQuat< T > operator+(const T a, const DualQuat< T > &q)
Definition: dualquaternion.inl.hpp:243
DualQuat< T > power(const DualQuat< T > &dq, const T t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:358
DualQuat< T > inv(const DualQuat< T > &dq, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:187
DualQuat< T > operator*(const T a, const DualQuat< T > &q)
Definition: dualquaternion.inl.hpp:274
DualQuat< T > log(const DualQuat< T > &dq, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition: dualquaternion.inl.hpp:344
DualQuat< T > operator-(const DualQuat< T > &q, const T a)
Definition: dualquaternion.inl.hpp:255
DualQuat< T > conjugate(const DualQuat< T > &dq)
Definition: dualquaternion.inl.hpp:125
DualQuat< T > exp(const DualQuat< T > &dq)
Definition: dualquaternion.inl.hpp:312