OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
四元數

詳細描述

類  cv::DualQuat< _Tp >
 
類  cv::Quat< _Tp >
 
類  cv::QuatEnum
 

型別定義

using cv::DualQuatd = DualQuat<double>
 
using cv::DualQuatf = DualQuat<float>
 
using cv::Quatd = Quat<double>
 
using cv::Quatf = Quat<float>
 

列舉

列舉  cv::QuatAssumeType {
  cv::QUAT_ASSUME_NOT_UNIT ,
  cv::QUAT_ASSUME_UNIT
}
 單位四元數標誌。 更多...
 

函式

template<typename T >
Quat< T > cv::acos (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::acosh (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::asin (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::asinh (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::atan (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::atanh (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::cos (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::cosh (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::crossProduct (const Quat< T > &p, const Quat< T > &q)
 
template<typename T >
Quat< T > cv::exp (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::inv (const Quat< T > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
 
template<typename T >
Quat< T > cv::log (const Quat< T > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
 
template<typename T >
Quat< T > cv::operator* (const Quat< T > &, const T)
 
template<typename T >
Quat< T > cv::operator* (const T, const Quat< T > &)
 
template<typename _Tp >
std::ostream & cv::operator<< (std::ostream &, const DualQuat< _Tp > &)
 
template<typename _Tp >
std::ostream & cv::operator<< (std::ostream &, const Quat< _Tp > &)
 
template<typename S >
std::ostream & cv::operator<< (std::ostream &, const Quat< S > &)
 
template<typename T >
Quat< T > cv::power (const Quat< T > &q, const Quat< T > &p, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
 
template<typename T >
Quat< T > cv::power (const Quat< T > &q, const T x, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
 
template<typename T >
Quat< T > cv::sin (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::sinh (const Quat< T > &q)
 
template<typename S >
Quat< S > cv::sqrt (const Quat< S > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
 
template<typename T >
Quat< T > cv::tan (const Quat< T > &q)
 
template<typename T >
Quat< T > cv::tanh (const Quat< T > &q)
 

型別定義文件

◆ DualQuatd

◆ DualQuatf

◆ Quatd

using cv::Quatd = Quat<double>

◆ Quatf

using cv::Quatf = Quat<float>

列舉型別文件

◆ QuatAssumeType

#include <opencv2/core/quaternion.hpp>

單位四元數標誌。

列舉器
QUAT_ASSUME_NOT_UNIT 
Python: cv.QUAT_ASSUME_NOT_UNIT

此標誌為預設指定。如果指定此標誌,則輸入四元數被假定為非單位四元數。雖然計算速度會比QUAT_ASSUME_UNIT標誌慢,但它可以保證計算的正確性。

QUAT_ASSUME_UNIT 
Python: cv.QUAT_ASSUME_UNIT

如果指定此標誌,則輸入四元數被假定為單位四元數,這將節省一些計算。但是,如果未提供單位四元數而指定此標誌,則無法保證結果的程式正確性。

函式文件

◆ acos()

template<typename T >
Quat< T > cv::acos ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\arccos(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arccosh(q)\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
acos(q);
定義 quaternion.hpp:211
Quat< T > acos(const Quat< T > &q)

◆ acosh()

template<typename T >
Quat< T > cv::acosh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[arccosh(q) = \ln(q + \sqrt{q^2 - 1})\]

.

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
acosh(q);
Quat< T > acosh(const Quat< T > &q)

◆ asin()

template<typename T >
Quat< T > cv::asin ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\arcsin(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arcsinh(q\frac{\boldsymbol{v}}{||\boldsymbol{v}||})\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
asin(q);
Quat< T > asin(const Quat< T > &q)

◆ asinh()

template<typename T >
Quat< T > cv::asinh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[arcsinh(q) = \ln(q + \sqrt{q^2 + 1})\]

.

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
asinh(q);
Quat< T > asinh(const Quat< T > &q)

◆ atan()

template<typename T >
Quat< T > cv::atan ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\arctan(q) = -\frac{\boldsymbol{v}}{||\boldsymbol{v}||}arctanh(q\frac{\boldsymbol{v}}{||\boldsymbol{v}||})\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
atan(q);
Quat< T > atan(const Quat< T > &q)

◆ atanh()

template<typename T >
Quat< T > cv::atanh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[arctanh(q) = \frac{\ln(q + 1) - \ln(1 - q)}{2}\]

.

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
atanh(q);
Quat< T > atanh(const Quat< T > &q)

◆ cos()

template<typename T >
Quat< T > cv::cos ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\cos(p) = \cos(w) * \cosh(||\boldsymbol{v}||) - \sin(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sinh(||\boldsymbol{v}||)\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
cos(q);
Quat< T > cos(const Quat< T > &q)

◆ cosh()

template<typename T >
Quat< T > cv::cosh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\cosh(p) = \cosh(w) * \cos(||\boldsymbol{v}||) + \sinh(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sin(||\boldsymbol{v}||)\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
cosh(q);
Quat< T > cosh(const Quat< T > &q)

◆ crossProduct()

template<typename T >
Quat< T > cv::crossProduct ( const Quat< T > & p,
const Quat< T > & q )

#include <opencv2/core/quaternion.hpp>

\[p \times q = \frac{pq- qp}{2}\]

\[p \times q = \boldsymbol{u} \times \boldsymbol{v}\]

\[p \times q = (cz-dy)i + (dx-bz)j + (by-xc)k \]

例如

Quatd q{1,2,3,4};
Quatd p{5,6,7,8};
Quat< T > crossProduct(const Quat< T > &p, const Quat< T > &q)
Quat< double > Quatd
Definition quaternion.hpp:1688

◆ exp()

template<typename T >
Quat< T > cv::exp ( const Quat< T > & q)
Python
cv.exp(src[, dst]) -> dst

#include <opencv2/core/quaternion.hpp>

\[\exp(q) = e^w (\cos||\boldsymbol{v}||+ \frac{v}{||\boldsymbol{v}||})\sin||\boldsymbol{v}||\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q{1,2,3,4};
cout << exp(q) << endl;
void exp(InputArray src, OutputArray dst)
計算每個陣列元素的指數。

◆ inv()

template<typename T >
Quat< T > cv::inv ( const Quat< T > & q,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT )

#include <opencv2/core/quaternion.hpp>

引數
q一個四元數。
assumeUnit如果QUAT_ASSUME_UNIT,則四元數q假定為單位四元數,此函式將節省一些計算。

例如

Quatd q(1,2,3,4);
inv(q);
q = q.normalize();
inv(q, assumeUnit);//此assumeUnit表示p是一個單位四元數
Quat< T > inv(const Quat< T > &q, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)
QuatAssumeType
單位四元數標誌。
定義 quaternion.hpp:39
@ QUAT_ASSUME_UNIT
定義 quaternion.hpp:52

◆ log()

template<typename T >
Quat< T > cv::log ( const Quat< T > & q,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT )
Python
cv.log(src[, dst]) -> dst

#include <opencv2/core/quaternion.hpp>

\[\ln(q) = \ln||q|| + \frac{\boldsymbol{v}}{||\boldsymbol{v}||}\arccos\frac{w}{||q||}.\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。
assumeUnit如果QUAT_ASSUME_UNIT,則q假定為單位四元數,此函式將節省一些計算。

例如

Quatd q1{1,2,3,4};
cout << log(q1) << endl;
void log(InputArray src, OutputArray dst)
計算每個陣列元素的自然對數。

◆ operator*() [1/2]

template<typename T >
Quat< T > cv::operator* ( const Quat< T > & ,
const T  )

◆ operator*() [2/2]

template<typename T >
Quat< T > cv::operator* ( const T ,
const Quat< T > &  )

◆ operator<<() [1/3]

template<typename _Tp >
std::ostream & cv::operator<< ( std::ostream & ,
const DualQuat< _Tp > &  )

◆ operator<<() [2/3]

template<typename _Tp >
std::ostream & cv::operator<< ( std::ostream & ,
const Quat< _Tp > &  )

◆ operator<<() [3/3]

template<typename S >
std::ostream & cv::operator<< ( std::ostream & ,
const Quat< S > &  )

◆ power() [1/2]

template<typename T >
Quat< T > cv::power ( const Quat< T > & q,
const Quat< T > & p,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT )

#include <opencv2/core/quaternion.hpp>

\[p^q = e^{q\ln(p)}.\]

引數
p冪函式的基本四元數。
q冪函式的指數四元數。
assumeUnit如果QUAT_ASSUME_UNIT,則四元數\(p\)假定為單位四元數,此函式將節省一些計算。

例如

Quatd p(1,2,3,4);
Quatd q(5,6,7,8);
power(p, q);
p = p.normalize();
power(p, q, assumeUnit); //此assumeUnit表示p是一個單位四元數
Quat< T > power(const Quat< T > &q, const Quat< T > &p, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)

◆ power() [2/2]

template<typename T >
Quat< T > cv::power ( const Quat< T > & q,
const T x,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT )

#include <opencv2/core/quaternion.hpp>

\[q^x = ||q||(cos(x\theta) + \boldsymbol{u}sin(x\theta))).\]

引數
q一個四元數。
x指數。
assumeUnit如果QUAT_ASSUME_UNIT,則四元數q假定為單位四元數,此函式將節省一些計算。

例如

Quatd q(1,2,3,4);
power(q, 2.0);
double angle = CV_PI;
Vec3d axis{0, 0, 1};
Quatd q1 = Quatd::createFromAngleAxis(angle, axis); //透過軸和角度生成一個單位四元數
power(q1, 2.0, assumeUnit);//此assumeUnit表示q1是一個單位四元數。
static Quat< _Tp > createFromAngleAxis(const _Tp angle, const Vec< _Tp, 3 > &axis)
從角度、軸生成。軸在此函式中將被歸一化。並生成
#define CV_PI
定義 cvdef.h:380
注意
索引的型別應與四元數相同。

◆ sin()

template<typename T >
Quat< T > cv::sin ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\sin(p) = \sin(w) * \cosh(||\boldsymbol{v}||) + \cos(w)\frac{\boldsymbol{v}}{||\boldsymbol{v}||}\sinh(||\boldsymbol{v}||)\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
sin(q);
Quat< T > sin(const Quat< T > &q)

◆ sinh()

template<typename T >
Quat< T > cv::sinh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\sinh(p) = \sin(w)\cos(||\boldsymbol{v}||) + \cosh(w)\frac{v}{||\boldsymbol{v}||}\sin||\boldsymbol{v}||\]

其中 \(\boldsymbol{v} = [x, y, z].\)

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
sinh(q);
Quat< T > sinh(const Quat< T > &q)

◆ sqrt()

template<typename S >
Quat< S > cv::sqrt ( const Quat< S > & q,
QuatAssumeType assumeUnit = QUAT_ASSUME_NOT_UNIT )
Python
cv.sqrt(src[, dst]) -> dst

◆ tan()

template<typename T >
Quat< T > cv::tan ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[\tan(q) = \frac{\sin(q)}{\cos(q)}.\]

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
tan(q);
Quat< T > tan(const Quat< T > &q)

◆ tanh()

template<typename T >
Quat< T > cv::tanh ( const Quat< T > & q)

#include <opencv2/core/quaternion.hpp>

\[ \tanh(q) = \frac{\sinh(q)}{\cosh(q)}.\]

引數
q一個四元數。

例如

Quatd q(1,2,3,4);
tanh(q);
Quat< T > tanh(const Quat< T > &q)
另請參見
sinh, cosh