- class QQuaternion#
类
QQuaternion
代表一个由向量和标量组成的四次方程。 更多…新版本 4.6 中引入。
Synopsis#
方法#
def
__init__()
def
__reduce__()
def
__repr__()
def
conjugated()
def
getAxes()
def
getEulerAngles()
def
inverted()
def
isIdentity()
def
isNull()
def
length()
def
lengthSquared()
def
normalize()
def
normalized()
定义
__ne__()
定义
__mul__()
定义
__imul__()
定义
__add__()
定义
__iadd__()
定义
__sub__()
定义
__isub__()
定义
__div__()
定义
operator/=()
定义
__eq__()
定义
scalar()
定义
setScalar()
定义
setVector()
定义
setX()
定义
setY()
定义
setZ()
定义
toVector4D()
定义
vector()
定义
x()
定义
y()
定义
z()
静态函数#
定义
dotProduct()
定义
fromAxes()
定义
nlerp()
定义
rotationTo()
定义
slerp()
备注
此文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您在翻译中发现问题,也可以在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们。
详细描述#
四元数用于表示三维空间的旋转,它由 x、y 和 z 坐标指定的三维旋转轴以及表示旋转角度的标量组成。
从
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)
- 参数::
scalar – float
vector –
QVector3D
从指定的
vector
和scalar
构建一个四元数向量。- __reduce__()#
- 返回类型:
对象
- __repr__()#
- 返回类型:
对象
- conjugated()#
- 返回类型:
返回该四元数的共轭,即(-x, -y, -z, 门量)。
- static dotProduct(q1, q2)#
- 参数::
q1 –
QQuaternion
q2 –
QQuaternion
- 返回类型:
浮点数
返回q1和q2的点积。
请参阅
- static fromAxes(xAxis, yAxis, zAxis)#
- 参数::
- 返回类型:
使用3个轴(
xAxis
,yAxis
,zAxis
)构建四元数。创建一个归一化的四元数,该四元数对应于绕指定的3D
axis
旋转angle
度。- static fromAxisAndAngle(x, y, z, angle)
- 参数::
x – float
y – float
z – float
angle – float
- 返回类型:
创建一个与沿3D轴(
x
、y
、z
)旋转angle
度对应的单位四元数。- static fromDirection(direction, up)#
- 参数::
- 返回类型:
使用指定的前向方向
direction
和向上方向up
构造四元数。如果未指定向上方向或者前向和向上向量共线,将生成一个新的正交归一化向上方向。这是一个重载函数。
创建一个对应于旋转eulerAngles(绕z轴旋转
z
度,绕x轴旋转x
度,绕y轴旋转y
度)的四元数。请参阅
- static fromEulerAngles(pitch, yaw, roll)
- 参数::
pitch – float
– float
roll – float
- 返回类型:
创建一个对应于绕z轴旋转
roll
度,绕x轴旋转pitch
度,绕y轴旋转yaw
度的四元数(按此顺序)。请参阅
- static fromRotationMatrix(rot3x3)#
- 参数::
rot3x3 –
QMatrix3x3
- 返回类型:
创建一个对应于旋转矩阵
rot3x3
的四元数。返回定义四元数的 3 个正交归一轴 (
xAxis
,yAxis
,zAxis
)。这是一个重载函数。
提取与此四元数相对应的 3D 轴
axis
和旋转角度angle
(单位为度)。- getEulerAngles()#
- 返回类型:
(float, float, float)
计算与此四元数相对应的
roll
、pitch
和yaw
欧拉角(单位为度)。- inverted()#
- 返回类型:
返回此四元数的逆。如果此四元数为空,则返回空四元数。
- 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)#
- 参数::
q1 –
QQuaternion
q2 –
QQuaternion
t - 浮点数
- 返回类型:
在旋转位置
q1
和q2
之间的最短线性路径上进行插值。值t
应在0到1之间,表示在q1
和q2
之间旅行的距离。结果将将是normalized()
的。如果
t
小于或等于0,则返回q1
。如果t
大于或等于1,则返回q2
。nlerp()函数通常比
slerp()
更快,并且将为某些应用提供足够好的球面插值的近似结果。请参阅
- normalize()#
就地规范化当前四元数。如果是空四元数或四元数的长度非常接近1,则不执行任何操作。
请参阅
- normalized()#
- 返回类型:
返回此四元数的归一化单位形式。
如果此四元数为空,则返回空四元数。如果四元数的长度非常接近1,则四元数将按原样返回。否则,将返回长度为1的四元数的归一化形式。
- __ne__(q2)#
- 参数::
q2 –
QQuaternion
- 返回类型:
bool
如果 q1 不等于 q2,则返回 true;否则返回 false。此运算符使用精确的浮点数比较。
- __mul__(factor)#
- 参数::
因子 - float
- 返回类型:
返回给定
quaternion
的副本,并将其乘以给定的factor
。请参阅
operator*=()
- __mul__(factor)
- 参数::
因子 - float
- 返回类型:
返回给定
quaternion
的副本,并将其乘以给定的factor
。请参阅
operator*=()
- __mul__(q2)
- 参数::
q2 –
QQuaternion
- 返回类型:
使用四元数乘法将 q1 和 q2 相乘。结果相当于应用 q1 和 q2 指定的旋转。
请参阅
operator*=()
- __imul__(quaternion)#
- 参数::
quaternion -
QQuaternion
- 返回类型:
将此四元数乘以
quaternion
并返回对此四元数的引用。- __imul__(factor)
- 参数::
因子 - float
- 返回类型:
将此四元数的分量乘以给定的
factor
并返回对此四元数的引用。请参阅
operator/=()
- __add__(q2)#
- 参数::
q2 –
QQuaternion
- 返回类型:
返回一个四元数对象的和,即给定四元数
q1
和q2
的和,每个分量分别相加。QQuaternion
。请参阅
operator+=()
- __iadd__(quaternion)#
- 参数::
quaternion -
QQuaternion
- 返回类型:
将给定的
quaternion
加到该四元数上,并返回对该四元数的引用。请参阅
operator-=()
- __sub__()#
- 返回类型:
这是一个重载函数。
返回一个
QQuaternion
对象,该对象由给定四元数所有三个分量的符号更改而成。等同于
QQuaternion(0,0,0,0) - quaternion
。- __sub__(q2)
- 参数::
q2 –
QQuaternion
- 返回类型:
返回一个
QQuaternion
对象,它是通过从q1
中减去q2
而形成的;每个分量单独相减。请参阅
operator-=()
- __isub__(quaternion)#
- 参数::
quaternion -
QQuaternion
- 返回类型:
从这个四元数中减去给定的
quaternion
,并返回对该四元数的引用。请参阅
operator+=()
- __div__(divisor)#
- 参数::
divisor - 浮点数
- 返回类型:
返回一个
QQuaternion
对象,它是通过将给定的四元数所有分量除以给定的除数而形成的。请参阅
operator/=()
- operator/=(divisor)
- 参数::
divisor - 浮点数
- 返回类型:
将此四元数的分量除以给定的
divisor
,并返回对此四元数的引用。请参阅
operator*=()
- __eq__(q2)#
- 参数::
q2 –
QQuaternion
- 返回类型:
bool
如果
q1
等于q2
,则返回true
;否则返回false
。此运算符使用精确的浮点比较。警告
本节包含从C++自动翻译成Python的代码片段,可能包含错误。
将向量
vector
以此四元数旋转,在3D空间中生成一个新的向量。以下代码result = q.rotatedVector(vector)
相当于以下代码
result = (q * QQuaternion(0, vector) * q.conjugated()).vector()
- 静态 rotationTo(from, to)#
- 参数::
- 返回类型:
返回从向量
from
描述的方向旋转到向量to
描述的方向的最短弧四元数。请参阅
- scalar()#
- 返回类型:
浮点数
返回此四元数的标量分量。
请参阅
- setScalar(scalar)#
- 参数::
scalar – float
设置此四元数的标量分量为
scalar
。将此四元数的向量分量设置为
vector
。请参阅
- setVector(x, y, z)
- 参数::
x – float
y – float
z – float
将此四元数的向量分量设置为 (
x
,y
,z
).请参阅
- setX(x)#
- 参数::
x – float
将此四元数的向量x坐标设置为指定的
x
坐标。请参阅
- setY(y)#
- 参数::
y – float
将此四元数的向量y坐标设置为指定的
y
坐标。请参阅
- setZ(z)#
- 参数::
z – float
将此四元数的向量z坐标设置为指定的
z
坐标。请参阅
- static slerp(q1, q2, t)#
- 参数::
q1 –
QQuaternion
q2 –
QQuaternion
t - 浮点数
- 返回类型:
沿beween
q1
和q2
的最短球形路径进行插值。值t
应在0和1之间,表示从q1
到q2
之间的球形距离。如果
t
小于或等于0,则返回q1
。如果t
大于或等于1,则返回q2
。请参阅
这是一个重载函数。
计算与该四元数对应的偏航角、俯仰角和航向角(以度为单位)。
- toRotationMatrix()#
- 返回类型:
创建与该四元数对应的旋转矩阵。
将此四元数作为4D向量返回。
返回此四元数的向量分量。
请参阅
- x()#
- 返回类型:
浮点数
返回此四元数的向量x坐标。
- y()#
- 返回类型:
浮点数
返回此四元数的向量y坐标。
- z()#
- 返回类型:
浮点数
返回此四元数的向量z坐标。