class QQuaternion#

QQuaternion 代表一个由向量和标量组成的四次方程。 更多

新版本 4.6 中引入。

Synopsis#

方法#

静态函数#

备注

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

详细描述#

四元数用于表示三维空间的旋转,它由 x、y 和 z 坐标指定的三维旋转轴以及表示旋转角度的标量组成。

__init__(vector)#
参数::

vectorQVector4D

vector 的分量构造四元数。

__init__()

构造一个单位四元数(1, 0, 0, 0),即具有向量(0, 0, 0)和标量 1。

__init__(scalar, xpos, ypos, zpos)
参数::
  • scalar – float

  • xpos – float

  • ypos – float

  • zpos – float

从向量 (xpos, ypos, zpos) 和 scalar 构造四元数。

__init__(scalar, vector)
参数::

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

请参阅

vector() scalar()

__reduce__()#
返回类型:

对象

__repr__()#
返回类型:

对象

conjugated()#
返回类型:

QQuaternion

返回该四元数的共轭,即(-x, -y, -z, 门量)。

static dotProduct(q1, q2)#
参数::
返回类型:

浮点数

返回q1和q2的点积。

请参阅

length()

static fromAxes(xAxis, yAxis, zAxis)#
参数::
返回类型:

QQuaternion

使用3个轴(xAxisyAxiszAxis)构建四元数。

备注

假设这些轴线是正交归一的。

static fromAxisAndAngle(axis, angle)#
参数::
返回类型:

QQuaternion

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

请参阅

getAxisAndAngle()

static fromAxisAndAngle(x, y, z, angle)
参数::
  • x – float

  • y – float

  • z – float

  • angle – float

返回类型:

QQuaternion

创建一个与沿3D轴(xyz)旋转angle度对应的单位四元数。

请参阅

getAxisAndAngle()

static fromDirection(direction, up)#
参数::
返回类型:

QQuaternion

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

static fromEulerAngles(eulerAngles)#
参数::

eulerAnglesQVector3D

返回类型:

QQuaternion

这是一个重载函数。

创建一个对应于旋转eulerAngles(绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度)的四元数。

请参阅

toEulerAngles()

static fromEulerAngles(pitch, yaw, roll)
参数::
  • pitch – float

  • – float

  • roll – float

返回类型:

QQuaternion

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

请参阅

getEulerAngles()

static fromRotationMatrix(rot3x3)#
参数::

rot3x3QMatrix3x3

返回类型:

QQuaternion

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

备注

如果给定的旋转矩阵未正则化,则结果四元数将包含缩放信息。

getAxes(xAxis, yAxis, zAxis)#
参数::

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

getAxisAndAngle()#
返回类型:

(QVector3D, float)

这是一个重载函数。

提取与此四元数相对应的 3D 轴 axis 和旋转角度 angle(单位为度)。

请参阅

fromAxisAndAngle()

getEulerAngles()#
返回类型:

(float, float, float)

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

请参阅

fromEulerAngles()

inverted()#
返回类型:

QQuaternion

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

请参阅

isNull() length()

isIdentity()#
返回类型:

bool

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

isNull()#
返回类型:

bool

如果这个四元数的x、y、z、标量组件都设置为0.0,则返回true;否则返回false

length()#
返回类型:

浮点数

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

lengthSquared()#
返回类型:

浮点数

返回四元数的平方长度。

备注

虽然计算起来便宜,但这容易受溢出和下溢的影响,而length()在许多情况下避免了这种情况。

请参阅

length() dotProduct()

静态nlerp(q1, q2, t)#
参数::
返回类型:

QQuaternion

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

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

nlerp()函数通常比slerp()更快,并且将为某些应用提供足够好的球面插值的近似结果。

请参阅

slerp()

normalize()#

就地规范化当前四元数。如果是空四元数或四元数的长度非常接近1,则不执行任何操作。

normalized()#
返回类型:

QQuaternion

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

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

__ne__(q2)#
参数::

q2QQuaternion

返回类型:

bool

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

__mul__(factor)#
参数::

因子 - float

返回类型:

QQuaternion

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

请参阅

operator*=()

__mul__(factor)
参数::

因子 - float

返回类型:

QQuaternion

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

请参阅

operator*=()

__mul__(q2)
参数::

q2QQuaternion

返回类型:

QQuaternion

使用四元数乘法将 q1 和 q2 相乘。结果相当于应用 q1 和 q2 指定的旋转。

请参阅

operator*=()

__imul__(quaternion)#
参数::

quaternion - QQuaternion

返回类型:

QQuaternion

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

__imul__(factor)
参数::

因子 - float

返回类型:

QQuaternion

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

请参阅

operator/=()

__add__(q2)#
参数::

q2QQuaternion

返回类型:

QQuaternion

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

请参阅

operator+=()

__iadd__(quaternion)#
参数::

quaternion - QQuaternion

返回类型:

QQuaternion

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

请参阅

operator-=()

__sub__()#
返回类型:

QQuaternion

这是一个重载函数。

返回一个QQuaternion对象,该对象由给定四元数所有三个分量的符号更改而成。

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

__sub__(q2)
参数::

q2QQuaternion

返回类型:

QQuaternion

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

请参阅

operator-=()

__isub__(quaternion)#
参数::

quaternion - QQuaternion

返回类型:

QQuaternion

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

请参阅

operator+=()

__div__(divisor)#
参数::

divisor - 浮点数

返回类型:

QQuaternion

返回一个QQuaternion对象,它是通过将给定的四元数所有分量除以给定的除数而形成的。

请参阅

operator/=()

operator/=(divisor)
参数::

divisor - 浮点数

返回类型:

QQuaternion

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

请参阅

operator*=()

__eq__(q2)#
参数::

q2QQuaternion

返回类型:

bool

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

rotatedVector(vector)#
参数::

vectorQVector3D

返回类型:

QVector3D

警告

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

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

result = q.rotatedVector(vector)

相当于以下代码

result = (q * QQuaternion(0, vector) * q.conjugated()).vector()
静态 rotationTo(from, to)#
参数::
返回类型:

QQuaternion

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

请参阅

fromDirection()

scalar()#
返回类型:

浮点数

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

请参阅

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

setScalar(scalar)#
参数::

scalar – float

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

setVector(vector)#
参数::

vectorQVector3D

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

请参阅

vector() setScalar()

setVector(x, y, z)
参数::
  • x – float

  • y – float

  • z – float

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

请参阅

vector() setScalar()

setX(x)#
参数::

x – float

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

setY(y)#
参数::

y – float

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

setZ(z)#
参数::

z – float

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

static slerp(q1, q2, t)#
参数::
返回类型:

QQuaternion

沿beween q1q2 的最短球形路径进行插值。值 t 应在0和1之间,表示从 q1q2 之间的球形距离。

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

请参阅

nlerp()

toEulerAngles()#
返回类型:

QVector3D

这是一个重载函数。

计算与该四元数对应的偏航角、俯仰角和航向角(以度为单位)。

请参阅

fromEulerAngles()

toRotationMatrix()#
返回类型:

QMatrix3x3

创建与该四元数对应的旋转矩阵。

备注

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

toVector4D()#
返回类型:

QVector4D

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

vector()#
返回类型:

QVector3D

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

请参阅

setVector() scalar()

x()#
返回类型:

浮点数

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

请参阅

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

y()#
返回类型:

浮点数

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

请参阅

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

z()#
返回类型:

浮点数

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

请参阅

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