OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
四元数

详细描述

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

类型定义

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

枚举

枚举 cv::QuatAssumeType {
  cv::QUAT_ASSUME_NOT_UNIT ,
  cv::QUAT_ASSUME_UNIT
}
 单位四元数标志。更多…
 

函数

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

类型定义文档

◆ DualQuatd

◆ DualQuatf

◆ Quatd

使用 cv::Quatd = Quat<double>

◆ Quatf

使用 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()

模板<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()

模板<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()

模板<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()

模板<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()

模板<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()

模板<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()

模板<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()

模板<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()

模板<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
定义 quaternion.hpp:1688

◆ exp()

模板<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()

模板<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);//这意味着 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()

模板<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]

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

◆ operator*() [2/2]

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

◆ operator<<() [1/3]

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

◆ operator<<() [2/3]

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

◆ operator<<() [3/3]

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

◆ power() [1/2]

模板<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); //这意味着 p 是一个单位四元数
Quat< T > power(const Quat< T > &q, const Quat< T > &p, QuatAssumeType assumeUnit=QUAT_ASSUME_NOT_UNIT)

◆ power() [2/2]

模板<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()

模板<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()

模板<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()

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

◆ tan()

模板<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()

模板<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