PySide6.QtGui.QQuaternion

class QQuaternion

QQuaternion 类表示由向量和标量组成的四元数。更多

在版本4.6中添加。

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

四元数用于表示3D空间中的旋转,由x、y和z坐标指定的3D旋转轴和表示旋转角度的标量组成。

__init__()

构造一个单位四元数 (1, 0, 0, 0),即向量为 (0, 0, 0) 且标量为 1。

__init__(vector)
Parameters:

向量QVector4D

vector的分量构造一个四元数。

__init__(scalar, vector)
Parameters:

从指定的vectorscalar构造一个四元数向量。

另请参阅

vector() scalar()

__init__(scalar, xpos, ypos, zpos)
Parameters:
  • scalar – 浮点数

  • xpos – 浮点数

  • ypos – 浮点数

  • zpos – 浮点数

使用向量(xpos, ypos, zpos)和scalar构造一个四元数。

__reduce__()
Return type:

字符串

__repr__()
Return type:

字符串

conjugated()
Return type:

QQuaternion

返回此四元数的共轭,即 (-x, -y, -z, scalar)。

static dotProduct(q1, q2)
Parameters:
Return type:

浮点数

返回 q1q2 的点积。

另请参阅

length()

static fromAxes(xAxis, yAxis, zAxis)
Parameters:
Return type:

QQuaternion

使用3个轴(xAxis, yAxis, zAxis)构造四元数。

注意

假设轴是正交的。

static fromAxisAndAngle(axis, angle)
Parameters:
Return type:

QQuaternion

创建一个归一化的四元数,该四元数对应于绕指定的3D axis 旋转 angle 度。

另请参阅

getAxisAndAngle()

static fromAxisAndAngle(x, y, z, angle)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

  • angle – 浮点数

Return type:

QQuaternion

创建一个归一化的四元数,对应于绕3D轴(x, y, z)旋转angle度。

另请参阅

getAxisAndAngle()

static fromDirection(direction, up)
Parameters:
Return type:

QQuaternion

使用指定的前向方向 direction 和上向方向 up 构造四元数。如果未指定上向方向或前向和上向向量共线,将生成一个新的正交上向方向。

另请参阅

fromAxes() rotationTo()

static fromEulerAngles(eulerAngles)
Parameters:

eulerAnglesQVector3D

Return type:

QQuaternion

这是一个重载函数。

创建一个对应于eulerAngles旋转的四元数:围绕z轴旋转eulerAngles.z()度,围绕x轴旋转eulerAngles.x()度,以及围绕y轴旋转eulerAngles.y()度(按此顺序)。

另请参阅

toEulerAngles()

static fromEulerAngles(pitch, yaw, roll)
Parameters:
  • pitch – 浮点数

  • yaw – 浮点数

  • roll – 浮点数

Return type:

QQuaternion

创建一个四元数,对应于绕z轴旋转roll度,绕x轴旋转pitch度,以及绕y轴旋转yaw度(按此顺序)。

另请参阅

getEulerAngles()

static fromRotationMatrix(rot3x3)
Parameters:

rot3x3QMatrix3x3

Return type:

QQuaternion

创建一个对应于旋转矩阵 rot3x3 的四元数。

注意

如果给定的旋转矩阵未归一化,生成的四元数将包含缩放信息。

getAxes(xAxis, yAxis, zAxis)
Parameters:

返回定义四元数的3个正交轴(xAxis, yAxis, zAxis)。

getAxisAndAngle()
Return type:

(QVector3D, float)

这是一个重载函数。

提取一个3D轴axis和一个旋转角度angle(以度为单位),该角度对应于这个四元数。

另请参阅

fromAxisAndAngle()

getEulerAngles()
Return type:

(float, float, float)

计算与此四元数对应的rollpitchyaw欧拉角(以度为单位)。

另请参阅

fromEulerAngles()

inverted()
Return type:

QQuaternion

返回此四元数的逆。如果此四元数为空,则返回一个空四元数。

另请参阅

isNull() length()

isIdentity()
Return type:

布尔

如果此四元数的x、y和z分量设置为0.0,且标量分量设置为1.0,则返回true;否则返回false

isNull()
Return type:

布尔

如果此四元数的x、y、z和标量分量设置为0.0,则返回true;否则返回false

length()
Return type:

浮点数

返回四元数的长度。这也被称为“范数”。

lengthSquared()
Return type:

浮点数

返回四元数的平方长度。

注意

虽然计算成本低,但这种方法容易受到溢出和下溢的影响,而length()在许多情况下可以避免这些问题。

另请参阅

length() dotProduct()

static nlerp(q1, q2, t)
Parameters:
Return type:

QQuaternion

沿着旋转位置q1q2之间的最短线性路径进行插值。值t应在0和1之间,表示在q1q2之间行进的距离。结果将被normalized()

如果 t 小于或等于 0,则返回 q1。如果 t 大于或等于 1,则返回 q2

nlerp() 函数通常比 slerp() 更快,并且会给出一些应用中足够好的球面插值近似结果。

另请参阅

slerp()

normalize()

将当前四元数就地归一化。如果这是一个空四元数或四元数的长度非常接近1,则不会发生任何变化。

另请参阅

length() normalized()

normalized()
Return type:

QQuaternion

返回此四元数的归一化单位形式。

如果这个四元数为空,则返回一个空四元数。如果四元数的长度非常接近1,则四元数将按原样返回。否则,将返回长度为1的四元数的归一化形式。

__ne__(q2)
Parameters:

q2QQuaternion

Return type:

布尔

如果 q1 不等于 q2,则返回 true;否则返回 false。此运算符使用精确的浮点数比较。

__mul__(q2)
Parameters:

q2QQuaternion

Return type:

QQuaternion

使用四元数乘法将q1q2相乘。结果对应于应用由q1q2指定的两个旋转。

另请参阅

operator*=()

__mul__(factor)
Parameters:

factor – 浮点数

Return type:

QQuaternion

返回给定quaternion的副本,乘以给定的factor

另请参阅

operator*=()

__mul__(factor)
Parameters:

factor – 浮点数

Return type:

QQuaternion

返回给定quaternion的副本,乘以给定的factor

另请参阅

operator*=()

__imul__(quaternion)
Parameters:

四元数QQuaternion

Return type:

QQuaternion

将此四元数乘以 quaternion 并返回对此四元数的引用。

__imul__(factor)
Parameters:

factor – 浮点数

Return type:

QQuaternion

将此四元数的分量乘以给定的factor,并返回对此四元数的引用。

另请参阅

operator/=()

__add__(q2)
Parameters:

q2QQuaternion

Return type:

QQuaternion

返回一个QQuaternion对象,该对象是给定四元数q1q2的和;每个分量分别相加。

另请参阅

operator+=()

__iadd__(quaternion)
Parameters:

四元数QQuaternion

Return type:

QQuaternion

将给定的quaternion添加到此四元数,并返回对此四元数的引用。

另请参阅

operator-=()

__sub__()
Return type:

QQuaternion

这是一个重载函数。

返回一个QQuaternion对象,该对象是通过改变给定quaternion的所有三个分量的符号而形成的。

等同于 QQuaternion(0,0,0,0) - quaternion

__sub__(q2)
Parameters:

q2QQuaternion

Return type:

QQuaternion

返回一个QQuaternion对象,该对象是通过从q1中减去q2形成的;每个分量分别相减。

另请参阅

operator-=()

__isub__(quaternion)
Parameters:

四元数QQuaternion

Return type:

QQuaternion

从这个四元数中减去给定的quaternion,并返回对此四元数的引用。

另请参阅

operator+=()

__div__(divisor)
Parameters:

除数 – float

Return type:

QQuaternion

返回通过将给定quaternion的所有分量除以给定divisor形成的QQuaternion对象。

另请参阅

operator/=()

operator/=(divisor)
Parameters:

除数 – float

Return type:

QQuaternion

将此四元数的分量除以给定的divisor,并返回对此四元数的引用。

另请参阅

operator*=()

__eq__(q2)
Parameters:

q2QQuaternion

Return type:

布尔

如果 q1 等于 q2,则返回 true;否则返回 false。此运算符使用精确的浮点数比较。

rotatedVector(vector)
Parameters:

向量QVector3D

Return type:

QVector3D

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

使用此四元数旋转vector以在3D空间中生成一个新向量。以下代码:

result = q.rotatedVector(vector)

等同于以下内容:

result = (q * QQuaternion(0, vector) * q.conjugated()).vector()
static rotationTo(from, to)
Parameters:
Return type:

QQuaternion

返回从向量from描述的方向旋转到向量to描述的方向的最短弧四元数。

另请参阅

fromDirection()

scalar()
Return type:

浮点数

返回此四元数的标量分量。

另请参阅

setScalar() x() y() z()

setScalar(scalar)
Parameters:

标量 – 浮点数

将此四元数的标量分量设置为 scalar

另请参阅

scalar() setX() setY() setZ()

setVector(vector)
Parameters:

向量QVector3D

将此四元数的向量分量设置为 vector

另请参阅

vector() setScalar()

setVector(x, y, z)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

将此四元数的向量分量设置为(x, y, z)。

另请参阅

vector() setScalar()

setX(x)
Parameters:

x – 浮点数

将此四元数的向量的x坐标设置为给定的x坐标。

另请参阅

x() setY() setZ() setScalar()

setY(y)
Parameters:

y – 浮点数

将此四元数的向量的 y 坐标设置为给定的 y 坐标。

另请参阅

y() setX() setZ() setScalar()

setZ(z)
Parameters:

z – 浮点数

将此四元数的向量的z坐标设置为给定的z坐标。

另请参阅

z() setX() setY() setScalar()

static slerp(q1, q2, t)
Parameters:
Return type:

QQuaternion

沿着旋转位置q1q2之间的最短球面路径进行插值。值t应在0和1之间,表示在q1q2之间移动的球面距离。

如果 t 小于或等于 0,则返回 q1。如果 t 大于或等于 1,则返回 q2

另请参阅

nlerp()

toEulerAngles()
Return type:

QVector3D

这是一个重载函数。

计算与此四元数对应的滚转、俯仰和偏航欧拉角(以度为单位)。

另请参阅

fromEulerAngles()

toRotationMatrix()
Return type:

QMatrix3x3

创建一个与此四元数对应的旋转矩阵。

注意

如果此四元数未归一化,生成的旋转矩阵将包含缩放信息。

toVector4D()
Return type:

QVector4D

将此四元数作为4D向量返回。

vector()
Return type:

QVector3D

返回此四元数的向量分量。

另请参阅

setVector() scalar()

x()
Return type:

浮点数

返回此四元数向量的x坐标。

另请参阅

setX() y() z() scalar()

y()
Return type:

浮点数

返回此四元数向量的 y 坐标。

另请参阅

setY() x() z() scalar()

z()
Return type:

浮点数

返回此四元数向量的z坐标。

另请参阅

setZ() x() y() scalar()