EstervQrCode 2.0.0
Library for qr code manipulation
Loading...
Searching...
No Matches
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>
32namespace cv
33{
36
54
131
132template <typename _Tp> class Quat;
133template <typename _Tp> std::ostream& operator<<(std::ostream&, const Quat<_Tp>&);
134
209template <typename _Tp>
210class 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;
214public:
215 static constexpr _Tp CV_QUAT_EPS = (_Tp)1.e-6;
216 static constexpr _Tp CV_QUAT_CONVERT_THRESHOLD = (_Tp)1.e-6;
217
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
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
607
620 template <typename T>
621 friend Quat<T> cosh(const Quat<T> &q);
622
635
648 template <typename T>
649 friend Quat<T> tanh(const Quat<T> &q);
650
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
773
786 template <typename T>
787 friend Quat<T> acos(const Quat<T> &q);
788
801
814 template <typename T>
815 friend Quat<T> atan(const Quat<T> &q);
816
829
841 template <typename T>
842 friend Quat<T> asinh(const Quat<T> &q);
843
855
867 template <typename T>
868 friend Quat<T> acosh(const Quat<T> &q);
869
881
893 template <typename T>
894 friend Quat<T> atanh(const Quat<T> &q);
895
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
1622template <typename T>
1624
1625template <typename T>
1627
1628template <typename T>
1630
1631template <typename T>
1633
1634template <typename T>
1636
1637template <typename T>
1639
1640template <typename T>
1642
1643template <typename T>
1645
1646template <typename T>
1648
1649template <typename T>
1651
1652template <typename T>
1654
1655template <typename T>
1657
1658template <typename T>
1660
1661template <typename T>
1663
1664template <typename T>
1665Quat<T> exp(const Quat<T> &q);
1666
1667template <typename T>
1669
1670template <typename T>
1672
1673template <typename T>
1675
1676template <typename S>
1678
1679template <typename T>
1681
1682template <typename T>
1684
1685template <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
Quat< _Tp > cosh() const
return cosh value of this quaternion, cosh could be calculated as:
_Tp dot(Quat< _Tp > q) const
return the dot between quaternion and this quaternion.
static Quat< _Tp > createFromRvec(InputArray rvec)
from a rotation vector has the form , where represents rotation angle and represents normalized ro...
static Quat< _Tp > createFromZRot(const _Tp theta)
get a quaternion from a rotation about the Z-axis by .
friend Quat< T > cosh(const Quat< T > &q)
return cosh value of quaternion q, cosh could be calculated as:
static Quat< _Tp > createFromYRot(const _Tp theta)
get a quaternion from a rotation about the Y-axis by .
static constexpr _Tp CV_QUAT_EPS
Definition quaternion.hpp:215
Quat< _Tp > conjugate() const
return the conjugate of this quaternion.
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...
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...
friend Quat< T > tanh(const Quat< T > &q)
return tanh value of quaternion q, tanh could be calculated as:
friend Quat< T > power(const Quat< T > &q, const T x, QuatAssumeType assumeUnit)
return the value of power function with index .
Quat< _Tp > operator*(const Quat< _Tp > &) const
Multiplication operator of two quaternions q and p. Multiplies values on either side of the operator.
Quat< _Tp > asinh() const
return arcsinh value of this quaternion, arcsinh could be calculated as:
Quat< _Tp > acosh() const
return arccosh value of this quaternion, arccosh could be calculated as:
static Quat< _Tp > createFromEulerAngles(const Vec< _Tp, 3 > &angles, QuatEnum::EulerAnglesType eulerAnglesType)
from Euler angles
static Quat< _Tp > createFromXRot(const _Tp theta)
get a quaternion from a rotation about the X-axis by .
_Tp getAngle(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
get the angle of quaternion, it returns the rotation angle.
const _Tp & operator[](std::size_t n) const
Quat< _Tp > power(const Quat< _Tp > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of power function with quaternion .
Vec< _Tp, 3 > getAxis(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
get the axis of quaternion, it returns a vector of length 3.
friend Quat< T > sin(const Quat< T > &q)
return tanh value of quaternion q, sin could be calculated as:
Quat< _Tp > exp() const
return the value of exponential value.
friend Quat< T > log(const Quat< T > &q, QuatAssumeType assumeUnit)
return the value of logarithm function.
static Quat< _Tp > createFromRotMat(InputArray R)
from a 3x3 rotation matrix.
Quat< _Tp > & operator/=(const Quat< _Tp > &)
Division assignment operator of two quaternions p and q; It divides left operand with the right opera...
Quat< _Tp > & operator*=(const _Tp s)
Multiplication assignment operator of a quaternions and a scalar. It multiplies right operand with th...
Matx< _Tp, 4, 4 > toRotMat4x4(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform a quaternion to a 4x4 rotation matrix.
Quat< _Tp > tan() const
return tan value of this quaternion, tan could be calculated as:
Quat< _Tp > sqrt(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return .
Quat< _Tp > atan() const
return arctan value of this quaternion, arctan 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...
Quat< _Tp > & operator-=(const Quat< _Tp > &)
Subtraction assignment operator of two quaternions p and q. It subtracts right operand from the left ...
Quat< _Tp > & operator*=(const Quat< _Tp > &)
Multiplication assignment operator of two quaternions q and p. It multiplies right operand with the l...
Quat< _Tp > sinh() const
return sinh value of this quaternion, sinh could be calculated as: where
bool isNormal(_Tp eps=CV_QUAT_EPS) const
return true if this quaternion is a unit quaternion.
_Tp & operator[](std::size_t n)
Vec< _Tp, 3 > toEulerAngles(QuatEnum::EulerAnglesType eulerAnglesType)
Transform a quaternion q to Euler angles.
Vec< _Tp, 4 > toVec() const
transform the this quaternion to a Vec<T, 4>.
Quat< _Tp > crossProduct(const Quat< _Tp > &q) const
return the crossProduct between and .
Quat< _Tp > asin() const
return arcsin value of this quaternion, arcsin could be calculated as:
Quat< _Tp > & operator+=(const Quat< _Tp > &)
Addition assignment operator of two quaternions p and q. It adds right operand to the left operand an...
_Tp z
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 > normalize() const
return a normalized .
friend Quat< T > sinh(const Quat< T > &q)
return sinh value of quaternion q, sinh could be calculated as:
_Tp y
Definition quaternion.hpp:1618
Quat< _Tp > power(const _Tp x, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of power function with index .
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...
friend Quat< T > acosh(const Quat< T > &q)
return arccosh value of quaternion q, arccosh 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),...
friend Quat< T > atan(const Quat< T > &q)
return arctan value of quaternion q, arctan could be calculated as:
friend Quat< T > inv(const Quat< T > &q, QuatAssumeType assumeUnit)
return which is an inverse of which satisfies .
Quat< _Tp > acos() const
return arccos value of this quaternion, arccos could be calculated as:
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 > exp(const Quat< T > &q)
return the value of exponential value.
Quat< _Tp > cos() const
return cos value of this quaternion, cos could be calculated as:
Quat< _Tp > log(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return the value of logarithm function.
Quat< _Tp > tanh() const
return tanh value of this quaternion, tanh could be calculated as:
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 ...
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...
_Tp x
Definition quaternion.hpp:1618
friend Quat< T > tan(const Quat< T > &q)
return tan value of quaternion q, tan could be calculated as:
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,...
_Tp norm() const
return the norm of quaternion.
void assertNormal(_Tp eps=CV_QUAT_EPS) const
to throw an error if this quaternion is not a unit quaternion.
Quat< _Tp > operator-() const
Return opposite quaternion which satisfies .
Quat(_Tp w, _Tp x, _Tp y, _Tp z)
from four numbers.
Quat< _Tp > sin() const
return sin value of this quaternion, sin could be calculated as:
friend Quat< T > asinh(const Quat< T > &q)
return arcsinh value of quaternion q, arcsinh could be calculated as:
friend Quat< T > sqrt(const Quat< T > &q, QuatAssumeType assumeUnit)
return .
Quat(const Vec< _Tp, 4 > &coeff)
From Vec4d or Vec4f.
Quat< _Tp > inv(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
return which is an inverse of satisfying .
friend Quat< T > acos(const Quat< T > &q)
return arccos value of quaternion q, arccos could be calculated as:
Matx< _Tp, 3, 3 > toRotMat3x3(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform a quaternion to a 3x3 rotation matrix.
Quat< _Tp > & operator/=(const _Tp s)
Division assignment operator of a quaternions and a scalar. It divides left operand with the right op...
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
friend Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)
return the crossProduct between and .
friend Quat< T > cos(const Quat< T > &q)
return sin value of quaternion q, cos could be calculated as:
Vec< _Tp, 3 > toRotVec(QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT) const
transform this quaternion to a Rotation vector.
_Tp at(size_t index) const
a way to get element.
friend Quat< T > asin(const Quat< T > &q)
return arcsin value of quaternion q, arcsin could be calculated as:
friend Quat< T > power(const Quat< T > &p, const Quat< T > &q, QuatAssumeType assumeUnit)
return the value of power function with quaternion .
_Tp w
Definition quaternion.hpp:1618
Quat< _Tp > operator/(const Quat< _Tp > &) const
Division operator of two quaternions p and q. Divides left hand operand by right hand operand.
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
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...
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
static String & operator<<(String &out, Ptr< Formatted > fmtd)
Definition core.hpp:3164
CV__DEBUG_NS_END typedef const _InputArray & InputArray
Definition mat.hpp:442
int index
Definition core_c.h:634
const CvArr * angle
Definition core_c.h:1194
CvArr double power
Definition core_c.h:1199
const CvArr CvArr * x
Definition core_c.h:1195
Quat< T > tan(const Quat< T > &q)
Quat< T > asinh(const Quat< T > &q)
Quat< T > asin(const Quat< T > &q)
Quat< T > tanh(const Quat< T > &q)
Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)
Quat< T > acosh(const Quat< T > &q)
Quat< T > atanh(const Quat< T > &q)
Quat< T > cos(const Quat< T > &q)
Quat< T > sinh(const Quat< T > &q)
QuatAssumeType
Unit quaternion flag.
Definition quaternion.hpp:39
Quat< T > cosh(const Quat< T > &q)
Quat< T > atan(const Quat< T > &q)
Quat< T > sin(const Quat< T > &q)
Quat< T > acos(const Quat< T > &q)
@ 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 > inv(const DualQuat< T > &dq, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
Definition dualquaternion.inl.hpp:187
DualQuat< T > operator-(const DualQuat< T > &q, const T a)
Definition dualquaternion.inl.hpp:255
DualQuat< T > operator+(const T a, const DualQuat< T > &q)
Definition dualquaternion.inl.hpp:243
DualQuat< T > operator*(const T a, const DualQuat< T > &q)
Definition dualquaternion.inl.hpp:274