EstervQrCode 1.1.1
Library for qr code manipulation
quaternion.hpp
1 // This file is part of OpenCV project.
2 // It is subject to the license terms in the LICENSE file found in the top-level directory
3 // of this distribution and at http://opencv.org/license.html.
4 //
5 //
6 // License Agreement
7 // For Open Source Computer Vision Library
8 //
9 // Copyright (C) 2020, Huawei Technologies Co., Ltd. All rights reserved.
10 // Third party copyrights are property of their respective owners.
11 //
12 // Licensed under the Apache License, Version 2.0 (the "License");
13 // you may not use this file except in compliance with the License.
14 // You may obtain a copy of the License at
15 //
16 // http://www.apache.org/licenses/LICENSE-2.0
17 //
18 // Unless required by applicable law or agreed to in writing, software
19 // distributed under the License is distributed on an "AS IS" BASIS,
20 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 // See the License for the specific language governing permissions and
22 // limitations under the License.
23 //
24 // Author: Liangqian Kong <chargerKong@126.com>
25 // Longbu Wang <riskiest@gmail.com>
26 #ifndef OPENCV_CORE_QUATERNION_HPP
27 #define OPENCV_CORE_QUATERNION_HPP
28 
29 #include <opencv2/core.hpp>
30 #include <opencv2/core/utils/logger.hpp>
31 #include <iostream>
32 namespace cv
33 {
36 
39 {
53 };
54 
55 class QuatEnum
56 {
57 public:
99  {
112 
125  #ifndef CV_DOXYGEN
127  #endif
128  };
129 
130 };
131 
132 template <typename _Tp> class Quat;
133 template <typename _Tp> std::ostream& operator<<(std::ostream&, const Quat<_Tp>&);
134 
209 template <typename _Tp>
210 class Quat
211 {
212  static_assert(std::is_floating_point<_Tp>::value, "Quaternion only make sense with type of float or double");
213  using value_type = _Tp;
214 public:
215  static constexpr _Tp CV_QUAT_EPS = (_Tp)1.e-6;
216  static constexpr _Tp CV_QUAT_CONVERT_THRESHOLD = (_Tp)1.e-6;
217 
218  Quat();
219 
223  explicit Quat(const Vec<_Tp, 4> &coeff);
224 
228  Quat(_Tp w, _Tp x, _Tp y, _Tp z);
229 
236  static Quat<_Tp> createFromAngleAxis(const _Tp angle, const Vec<_Tp, 3> &axis);
237 
242 
262 
279 
284  static Quat<_Tp> createFromYRot(const _Tp theta);
285 
290  static Quat<_Tp> createFromXRot(const _Tp theta);
291 
296  static Quat<_Tp> createFromZRot(const _Tp theta);
297 
312  _Tp at(size_t index) const;
313 
319 
333  template <typename T>
334  friend Quat<T> exp(const Quat<T> &q);
335 
347  Quat<_Tp> exp() const;
348 
362  template <typename T>
363  friend Quat<T> log(const Quat<T> &q, QuatAssumeType assumeUnit);
364 
382 
403  template <typename T>
404  friend Quat<T> power(const Quat<T> &q, const T x, QuatAssumeType assumeUnit);
405 
424  Quat<_Tp> power(const _Tp x, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const;
425 
441  template <typename T>
442  friend Quat<T> sqrt(const Quat<T> &q, QuatAssumeType assumeUnit);
443 
459 
478  template <typename T>
479  friend Quat<T> power(const Quat<T> &p, const Quat<T> &q, QuatAssumeType assumeUnit);
480 
499 
513  template <typename T>
514  friend Quat<T> crossProduct(const Quat<T> &p, const Quat<T> &q);
515 
530 
535  _Tp norm() const;
536 
543 
560  template <typename T>
561  friend Quat<T> inv(const Quat<T> &q, QuatAssumeType assumeUnit);
562 
579 
592  template <typename T>
593  friend Quat<T> sinh(const Quat<T> &q);
594 
606  Quat<_Tp> sinh() const;
607 
620  template <typename T>
621  friend Quat<T> cosh(const Quat<T> &q);
622 
634  Quat<_Tp> cosh() const;
635 
648  template <typename T>
649  friend Quat<T> tanh(const Quat<T> &q);
650 
662  Quat<_Tp> tanh() const;
663 
676  template <typename T>
677  friend Quat<T> sin(const Quat<T> &q);
678 
690  Quat<_Tp> sin() const;
691 
704  template <typename T>
705  friend Quat<T> cos(const Quat<T> &q);
706 
718  Quat<_Tp> cos() const;
719 
731  template <typename T>
732  friend Quat<T> tan(const Quat<T> &q);
733 
744  Quat<_Tp> tan() const;
745 
758  template <typename T>
759  friend Quat<T> asin(const Quat<T> &q);
760 
772  Quat<_Tp> asin() const;
773 
786  template <typename T>
787  friend Quat<T> acos(const Quat<T> &q);
788 
800  Quat<_Tp> acos() const;
801 
814  template <typename T>
815  friend Quat<T> atan(const Quat<T> &q);
816 
828  Quat<_Tp> atan() const;
829 
841  template <typename T>
842  friend Quat<T> asinh(const Quat<T> &q);
843 
854  Quat<_Tp> asinh() const;
855 
867  template <typename T>
868  friend Quat<T> acosh(const Quat<T> &q);
869 
880  Quat<_Tp> acosh() const;
881 
893  template <typename T>
894  friend Quat<T> atanh(const Quat<T> &q);
895 
906  Quat<_Tp> atanh() const;
907 
915  bool isNormal(_Tp eps=CV_QUAT_EPS) const;
916 
922  void assertNormal(_Tp eps=CV_QUAT_EPS) const;
923 
957 
977 
988 
1007 
1025 
1052 
1072  _Tp dot(Quat<_Tp> q) const;
1073 
1086  static Quat<_Tp> lerp(const Quat<_Tp> &q0, const Quat &q1, const _Tp t);
1087 
1100  static Quat<_Tp> nlerp(const Quat<_Tp> &q0, const Quat &q1, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT);
1101 
1118  static Quat<_Tp> slerp(const Quat<_Tp> &q0, const Quat &q1, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT, bool directChange=true);
1119 
1140  static Quat<_Tp> squad(const Quat<_Tp> &q0, const Quat<_Tp> &s0,
1141  const Quat<_Tp> &s1, const Quat<_Tp> &q1,
1142  const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT,
1143  bool directChange=true);
1144 
1156  static Quat<_Tp> interPoint(const Quat<_Tp> &q0, const Quat<_Tp> &q1,
1157  const Quat<_Tp> &q2, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT);
1158 
1186  static Quat<_Tp> spline(const Quat<_Tp> &q0, const Quat<_Tp> &q1,
1187  const Quat<_Tp> &q2, const Quat<_Tp> &q3,
1188  const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT);
1189 
1201 
1206  bool operator==(const Quat<_Tp>&) const;
1207 
1220 
1235 
1248 
1263 
1288 
1312  Quat<_Tp>& operator*=(const _Tp s);
1313 
1337 
1361  Quat<_Tp> operator/(const _Tp s) const;
1362 
1384 
1408  Quat<_Tp>& operator/=(const _Tp s);
1409 
1432 
1434 
1435  const _Tp& operator[](std::size_t n) const;
1436 
1449  template <typename T>
1450  friend Quat<T> cv::operator-(const T s, const Quat<T>&);
1451 
1464  template <typename T>
1465  friend Quat<T> cv::operator-(const Quat<T>&, const T s);
1466 
1479  template <typename T>
1480  friend Quat<T> cv::operator+(const T s, const Quat<T>&);
1481 
1494  template <typename T>
1495  friend Quat<T> cv::operator+(const Quat<T>&, const T s);
1496 
1519  template <typename T>
1520  friend Quat<T> cv::operator*(const T s, const Quat<T>&);
1521 
1544  template <typename T>
1545  friend Quat<T> cv::operator*(const Quat<T>&, const T s);
1546 
1547  template <typename S>
1549 
1617 
1618  _Tp w, x, y, z;
1619 
1620 };
1621 
1622 template <typename T>
1624 
1625 template <typename T>
1627 
1628 template <typename T>
1630 
1631 template <typename T>
1633 
1634 template <typename T>
1635 Quat<T> sin(const Quat<T> &q);
1636 
1637 template <typename T>
1638 Quat<T> cos(const Quat<T> &q);
1639 
1640 template <typename T>
1641 Quat<T> tan(const Quat<T> &q);
1642 
1643 template <typename T>
1645 
1646 template <typename T>
1648 
1649 template <typename T>
1651 
1652 template <typename T>
1654 
1655 template <typename T>
1657 
1658 template <typename T>
1660 
1661 template <typename T>
1663 
1664 template <typename T>
1665 Quat<T> exp(const Quat<T> &q);
1666 
1667 template <typename T>
1669 
1670 template <typename T>
1672 
1673 template <typename T>
1674 Quat<T> crossProduct(const Quat<T> &p, const Quat<T> &q);
1675 
1676 template <typename S>
1678 
1679 template <typename T>
1680 Quat<T> operator*(const T, const Quat<T>&);
1681 
1682 template <typename T>
1683 Quat<T> operator*(const Quat<T>&, const T);
1684 
1685 template <typename S>
1687 
1690 
1692 }
1693 
1694 #include "opencv2/core/quaternion.inl.hpp"
1695 
1696 #endif /* OPENCV_CORE_QUATERNION_HPP */
Template class for small matrices whose type and size are known at compilation time.
Definition: matx.hpp:100
Definition: quaternion.hpp:56
EulerAnglesType
Enum of Euler angles type.
Definition: quaternion.hpp:99
@ INT_XYZ
Intrinsic rotations with the Euler angles type X-Y-Z.
Definition: quaternion.hpp:100
@ EXT_YXZ
Extrinsic rotations with the Euler angles type Y-X-Z.
Definition: quaternion.hpp:115
@ INT_XZY
Intrinsic rotations with the Euler angles type X-Z-Y.
Definition: quaternion.hpp:101
@ EXT_YZX
Extrinsic rotations with the Euler angles type Y-Z-X.
Definition: quaternion.hpp:116
@ INT_XZX
Intrinsic rotations with the Euler angles type X-Z-X.
Definition: quaternion.hpp:107
@ INT_ZYZ
Intrinsic rotations with the Euler angles type Z-Y-Z.
Definition: quaternion.hpp:111
@ EXT_ZXY
Extrinsic rotations with the Euler angles type Z-X-Y.
Definition: quaternion.hpp:117
@ INT_YZY
Intrinsic rotations with the Euler angles type Y-Z-Y.
Definition: quaternion.hpp:109
@ INT_YXZ
Intrinsic rotations with the Euler angles type Y-X-Z.
Definition: quaternion.hpp:102
@ INT_XYX
Intrinsic rotations with the Euler angles type X-Y-X.
Definition: quaternion.hpp:106
@ EXT_YXY
Extrinsic rotations with the Euler angles type Y-X-Y.
Definition: quaternion.hpp:121
@ INT_ZXY
Intrinsic rotations with the Euler angles type Z-X-Y.
Definition: quaternion.hpp:104
@ EXT_ZXZ
Extrinsic rotations with the Euler angles type Z-X-Z.
Definition: quaternion.hpp:123
@ EXT_ZYX
Extrinsic rotations with the Euler angles type Z-Y-X.
Definition: quaternion.hpp:118
@ EXT_YZY
Extrinsic rotations with the Euler angles type Y-Z-Y.
Definition: quaternion.hpp:122
@ EXT_ZYZ
Extrinsic rotations with the Euler angles type Z-Y-Z.
Definition: quaternion.hpp:124
@ INT_ZXZ
Intrinsic rotations with the Euler angles type Z-X-Z.
Definition: quaternion.hpp:110
@ EXT_XZX
Extrinsic rotations with the Euler angles type X-Z-X.
Definition: quaternion.hpp:120
@ EXT_XYZ
Extrinsic rotations with the Euler angles type X-Y-Z.
Definition: quaternion.hpp:113
@ INT_ZYX
Intrinsic rotations with the Euler angles type Z-Y-X.
Definition: quaternion.hpp:105
@ INT_YZX
Intrinsic rotations with the Euler angles type Y-Z-X.
Definition: quaternion.hpp:103
@ EULER_ANGLES_MAX_VALUE
Definition: quaternion.hpp:126
@ EXT_XYX
Extrinsic rotations with the Euler angles type X-Y-X.
Definition: quaternion.hpp:119
@ EXT_XZY
Extrinsic rotations with the Euler angles type X-Z-Y.
Definition: quaternion.hpp:114
@ INT_YXY
Intrinsic rotations with the Euler angles type Y-X-Y.
Definition: quaternion.hpp:108
Definition: quaternion.hpp:211
friend Quat< T > asinh(const Quat< T > &q)
return arcsinh value of quaternion q, arcsinh could be calculated as:
_Tp dot(Quat< _Tp > q) const
return the dot between quaternion and this quaternion.
Quat< _Tp > operator*(const Quat< _Tp > &) const
Multiplication operator of two quaternions q and p. Multiplies values on either side of the operator.
static Quat< _Tp > lerp(const Quat< _Tp > &q0, const Quat &q1, const _Tp t)
To calculate the interpolation from to by Linear Interpolation(Nlerp) For two quaternions,...
friend Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)
return the crossProduct between and .
static constexpr _Tp CV_QUAT_EPS
Definition: quaternion.hpp:215
friend Quat< T > sinh(const Quat< T > &q)
return sinh value of quaternion q, sinh could be calculated as:
Quat< _Tp > asinh() const
return arcsinh value of this quaternion, arcsinh could be calculated as:
friend Quat< T > atan(const Quat< T > &q)
return arctan value of quaternion q, arctan could be calculated as:
bool operator==(const Quat< _Tp > &) const
return true if two quaternions p and q are nearly equal, i.e. when the absolute value of each and i...
Quat< _Tp > cos() const
return cos value of this quaternion, cos could be calculated as:
Quat< _Tp > & operator*=(const Quat< _Tp > &)
Multiplication assignment operator of two quaternions q and p. It multiplies right operand with the l...
friend Quat< T > acosh(const Quat< T > &q)
return arccosh value of quaternion q, arccosh could be calculated as:
Quat< _Tp > power(const Quat< _Tp > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of power function with quaternion .
_Tp getAngle(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
get the angle of quaternion, it returns the rotation angle.
Quat< _Tp > & operator+=(const Quat< _Tp > &)
Addition assignment operator of two quaternions p and q. It adds right operand to the left operand an...
static Quat< _Tp > createFromEulerAngles(const Vec< _Tp, 3 > &angles, QuatEnum::EulerAnglesType eulerAnglesType)
from Euler angles
Matx< _Tp, 3, 3 > toRotMat3x3(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform a quaternion to a 3x3 rotation matrix.
Quat< _Tp > inv(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return which is an inverse of satisfying .
Quat< _Tp > acos() const
return arccos value of this quaternion, arccos could be calculated as:
static Quat< _Tp > createFromRotMat(InputArray R)
from a 3x3 rotation matrix.
friend Quat< T > sin(const Quat< T > &q)
return tanh value of quaternion q, sin could be calculated as:
Quat< _Tp > sinh() const
return sinh value of this quaternion, sinh could be calculated as: where
friend Quat< T > cos(const Quat< T > &q)
return sin value of quaternion q, cos could be calculated as:
static Quat< _Tp > slerp(const Quat< _Tp > &q0, const Quat &q1, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT, bool directChange=true)
To calculate the interpolation between and by Spherical Linear Interpolation(Slerp),...
bool isNormal(_Tp eps=CV_QUAT_EPS) const
return true if this quaternion is a unit quaternion.
Quat< _Tp > acosh() const
return arccosh value of this quaternion, arccosh could be calculated as:
_Tp z
Definition: quaternion.hpp:1618
Quat< _Tp > operator-() const
Return opposite quaternion which satisfies .
friend Quat< T > asin(const Quat< T > &q)
return arcsin value of quaternion q, arcsin could be calculated as:
_Tp & operator[](std::size_t n)
Quat< _Tp > tanh() const
return tanh value of this quaternion, tanh could be calculated as:
_Tp y
Definition: quaternion.hpp:1618
Matx< _Tp, 4, 4 > toRotMat4x4(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform a quaternion to a 4x4 rotation matrix.
friend Quat< T > cosh(const Quat< T > &q)
return cosh value of quaternion q, cosh could be calculated as:
Quat< _Tp > log(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of logarithm function.
static Quat< _Tp > interPoint(const Quat< _Tp > &q0, const Quat< _Tp > &q1, const Quat< _Tp > &q2, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
This is the part calculation of squad. To calculate the intermedia quaternion between each three qua...
Quat< _Tp > sin() const
return sin value of this quaternion, sin could be calculated as:
static Quat< _Tp > createFromZRot(const _Tp theta)
get a quaternion from a rotation about the Z-axis by .
Quat< _Tp > normalize() const
return a normalized .
friend Quat< T > exp(const Quat< T > &q)
return the value of exponential value.
Quat< _Tp > & operator*=(const _Tp s)
Multiplication assignment operator of a quaternions and a scalar. It multiplies right operand with th...
friend Quat< T > sqrt(const Quat< T > &q, QuatAssumeType assumeUnit)
return .
Quat< _Tp > asin() const
return arcsin value of this quaternion, arcsin could be calculated as:
Quat< _Tp > & operator/=(const Quat< _Tp > &)
Division assignment operator of two quaternions p and q; It divides left operand with the right opera...
static Quat< _Tp > spline(const Quat< _Tp > &q0, const Quat< _Tp > &q1, const Quat< _Tp > &q2, const Quat< _Tp > &q3, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
to calculate a quaternion which is the result of a continuous spline curve constructed by squad at t...
Quat< _Tp > sqrt(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return .
friend Quat< T > power(const Quat< T > &p, const Quat< T > &q, QuatAssumeType assumeUnit)
return the value of power function with quaternion .
Quat< _Tp > conjugate() const
return the conjugate of this quaternion.
Vec< _Tp, 4 > toVec() const
transform the this quaternion to a Vec<T, 4>.
friend Quat< T > inv(const Quat< T > &q, QuatAssumeType assumeUnit)
return which is an inverse of which satisfies .
_Tp x
Definition: quaternion.hpp:1618
Quat< _Tp > operator+(const Quat< _Tp > &) const
Addition operator of two quaternions p and q. It returns a new quaternion that each value is the sum ...
Quat< _Tp > & operator/=(const _Tp s)
Division assignment operator of a quaternions and a scalar. It divides left operand with the right op...
Vec< _Tp, 3 > toEulerAngles(QuatEnum::EulerAnglesType eulerAnglesType)
Transform a quaternion q to Euler angles.
Quat< _Tp > operator/(const _Tp s) const
Division operator of a quaternions and a scalar. It divides left operand with the right operand and a...
static Quat< _Tp > nlerp(const Quat< _Tp > &q0, const Quat &q1, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
To calculate the interpolation from to by Normalized Linear Interpolation(Nlerp)....
friend Quat< T > tan(const Quat< T > &q)
return tan value of quaternion q, tan could be calculated as:
static Quat< _Tp > createFromAngleAxis(const _Tp angle, const Vec< _Tp, 3 > &axis)
from an angle, axis. Axis will be normalized in this function. And it generates
friend Quat< T > log(const Quat< T > &q, QuatAssumeType assumeUnit)
return the value of logarithm function.
_Tp norm() const
return the norm of quaternion.
friend Quat< T > power(const Quat< T > &q, const T x, QuatAssumeType assumeUnit)
return the value of power function with index .
Quat< _Tp > cosh() const
return cosh value of this quaternion, cosh could be calculated as:
void assertNormal(_Tp eps=CV_QUAT_EPS) const
to throw an error if this quaternion is not a unit quaternion.
Quat(_Tp w, _Tp x, _Tp y, _Tp z)
from four numbers.
Quat< _Tp > & operator-=(const Quat< _Tp > &)
Subtraction assignment operator of two quaternions p and q. It subtracts right operand from the left ...
Quat< _Tp > atan() const
return arctan value of this quaternion, arctan could be calculated as:
Quat< _Tp > exp() const
return the value of exponential value.
Quat(const Vec< _Tp, 4 > &coeff)
From Vec4d or Vec4f.
Quat< _Tp > operator/(const Quat< _Tp > &) const
Division operator of two quaternions p and q. Divides left hand operand by right hand operand.
Quat< _Tp > atanh() const
return arctanh value of this quaternion, arctanh could be calculated as:
static constexpr _Tp CV_QUAT_CONVERT_THRESHOLD
Definition: quaternion.hpp:216
static Quat< _Tp > createFromYRot(const _Tp theta)
get a quaternion from a rotation about the Y-axis by .
const _Tp & operator[](std::size_t n) const
Quat< _Tp > tan() const
return tan value of this quaternion, tan could be calculated as:
friend Quat< T > tanh(const Quat< T > &q)
return tanh value of quaternion q, tanh could be calculated as:
static Quat< _Tp > createFromRvec(InputArray rvec)
from a rotation vector has the form , where represents rotation angle and represents normalized ro...
Vec< _Tp, 3 > toRotVec(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform this quaternion to a Rotation vector.
Vec< _Tp, 3 > getAxis(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
get the axis of quaternion, it returns a vector of length 3.
_Tp at(size_t index) const
a way to get element.
static Quat< _Tp > squad(const Quat< _Tp > &q0, const Quat< _Tp > &s0, const Quat< _Tp > &s1, const Quat< _Tp > &q1, const _Tp t, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT, bool directChange=true)
To calculate the interpolation between , , , by Spherical and quadrangle(Squad). This could be defin...
Quat< _Tp > power(const _Tp x, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of power function with index .
_Tp w
Definition: quaternion.hpp:1618
friend Quat< T > atanh(const Quat< T > &q)
return arctanh value of quaternion q, arctanh could be calculated as:
Quat< _Tp > crossProduct(const Quat< _Tp > &q) const
return the crossProduct between and .
static Quat< _Tp > createFromXRot(const _Tp theta)
get a quaternion from a rotation about the X-axis by .
friend Quat< T > acos(const Quat< T > &q)
return arccos value of quaternion q, arccos could be calculated as:
Quat< _Tp > operator-(const Quat< _Tp > &) const
Subtraction operator of two quaternions p and q. It returns a new quaternion that each value is the s...
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
CV__DEBUG_NS_END typedef const _InputArray & InputArray
Definition: mat.hpp:442
const CvArr * angle
Definition: core_c.h:1194
int index
Definition: core_c.h:634
const CvArr CvArr * x
Definition: core_c.h:1195
Quat< T > asinh(const Quat< T > &q)
Quat< T > tanh(const Quat< T > &q)
Quat< T > acosh(const Quat< T > &q)
Quat< T > acos(const Quat< T > &q)
Quat< T > tan(const Quat< T > &q)
Quat< T > sin(const Quat< T > &q)
Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)
Quat< T > atan(const Quat< T > &q)
Quat< T > asin(const Quat< T > &q)
Quat< T > sinh(const Quat< T > &q)
Quat< S > sqrt(const Quat< S > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
QuatAssumeType
Unit quaternion flag.
Definition: quaternion.hpp:39
Quat< T > cosh(const Quat< T > &q)
Quat< T > atanh(const Quat< T > &q)
Quat< T > cos(const Quat< T > &q)
std::ostream & operator<<(std::ostream &, const DualQuat< _Tp > &)
@ QUAT_ASSUME_NOT_UNIT
Definition: quaternion.hpp:46
@ QUAT_ASSUME_UNIT
Definition: quaternion.hpp:52
void int double double theta
Definition: imgproc_c.h:926
int CvMemStorage int double eps
Definition: imgproc_c.h:493
"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 > exp(const DualQuat< T > &dq)
Definition: dualquaternion.inl.hpp:312