PySide6.QtGui.QMatrix4x4¶
- class QMatrix4x4¶
QMatrix4x4类表示3D空间中的4x4变换矩阵。更多…在版本4.6中添加。
概要¶
方法¶
def
__init__()def
__dummy()def
__mgetitem__()def
__reduce__()def
__repr__()def
column()def
copyDataTo()def
determinant()def
fill()def
flags()def
frustum()def
inverted()def
isAffine()def
isIdentity()def
lookAt()def
map()def
mapRect()def
mapVector()def
normalMatrix()def
__ne__()def
__mul__()def
__imul__()def
__add__()def
__iadd__()def
__sub__()def
__isub__()def
__div__()def
operator/=()def
__eq__()def
optimize()def
ortho()def
perspective()def
rotate()def
row()def
scale()def
setColumn()def
setRow()def
setToIdentity()def
toTransform()def
translate()def
transposed()def
viewport()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QMatrix4x4类通常被视为行主序矩阵,因为构造函数和operator()函数接受行主序格式的数据,这在 C 风格的使用中很常见。内部数据以列主序格式存储,以便最佳地传递给期望列主序数据的OpenGL函数。
使用这些函数时请注意,它们以列主序格式返回数据:
data()constData()
另请参阅
QVector3DQGenericMatrix- class Flag¶
- __init__()¶
构造一个单位矩阵。
- __init__(transform)
- Parameters:
transform –
QTransform
从传统的Qt 2D变换矩阵
transform构造一个4x4矩阵。如果
transform具有特殊类型(如 identity、translate、scale 等),程序员应在构造函数后调用optimize(),如果他们希望QMatrix4x4进一步优化对translate()、scale()等的调用。另请参阅
- __init__(values)
- Parameters:
值 – 浮点数
从给定的16个浮点数
values构造一个矩阵。假设数组values的内容是按行优先顺序排列的。如果矩阵具有特殊类型(单位矩阵、平移、缩放等),程序员应在调用此构造函数后调用
optimize(),如果他们希望QMatrix4x4优化对translate()、scale()等的进一步调用。另请参阅
- __init__(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44)
- Parameters:
m11 – 浮点数
m12 – 浮点数
m13 – 浮点数
m14 – 浮点数
m21 – 浮点数
m22 – 浮点数
m23 – 浮点数
m24 – 浮点数
m31 – 浮点数
m32 – 浮点数
m33 – 浮点数
m34 – 浮点数
m41 – 浮点数
m42 – 浮点数
m43 – 浮点数
m44 – 浮点数
从16个元素
m11、m12、m13、m14、m21、m22、m23、m24、m31、m32、m33、m34、m41、m42、m43和m44构造一个矩阵。这些元素按行优先顺序指定。如果矩阵具有特殊类型(如单位矩阵、平移矩阵、缩放矩阵等),程序员应在调用此构造函数后调用
optimize(),如果他们希望QMatrix4x4优化对translate()、scale()等的进一步调用。另请参阅
- __dummy(arg__1)¶
- Parameters:
arg__1 – 浮点数列表
- __mgetitem__()¶
- Return type:
对象
- __reduce__()¶
- Return type:
字符串
- __repr__()¶
- Return type:
字符串
返回列
index的元素作为一个4D向量。另请参阅
- copyDataTo()¶
- Return type:
元组
检索此矩阵中的16个项目,并将它们按行优先顺序复制到
values中。- determinant()¶
- Return type:
浮点数
返回此矩阵的行列式。
- fill(value)¶
- Parameters:
value – 浮点数
用
value填充此矩阵的所有元素。- flipCoordinates()¶
通过将 y 和 z 坐标乘以 -1,在右手坐标系和左手坐标系之间切换。这通常用于创建左手正交视图,而不会像
ortho()那样缩放视口。另请参阅
- frustum(left, right, bottom, top, nearPlane, farPlane)¶
- Parameters:
left – 浮点数
right – 浮点数
bottom – 浮点数
top – 浮点数
nearPlane – 浮点数
farPlane – float
将此矩阵与另一个矩阵相乘,该矩阵为左下角为(
left,bottom),右上角为(right,top)的窗口应用透视截头体投影,并指定nearPlane和farPlane裁剪平面。另请参阅
- inverted()¶
- Return type:
PyTuple
返回此矩阵的逆矩阵。如果此矩阵无法求逆,则返回单位矩阵;即
determinant()为零。如果invertible不为空,则如果矩阵可以求逆,则会将true写入该位置;否则为false。如果矩阵被识别为单位矩阵或正交矩阵,那么此函数将使用优化例程快速反转矩阵。
- isAffine()¶
- Return type:
布尔
如果此矩阵是仿射矩阵,则返回
true;否则返回false。仿射矩阵是一个4x4矩阵,其第三行等于(0, 0, 0, 1),例如没有投影系数。
另请参阅
- isIdentity()¶
- Return type:
布尔
如果此矩阵是单位矩阵,则返回
true;否则返回 false。另请参阅
将此矩阵乘以从视点派生的视图矩阵。
center值表示eye所注视的视图中心。up值表示相对于eye应该被视为向上的方向。注意
up向量不能与从eye到center的视线平行。通过将此矩阵乘以
point来映射point。矩阵在点之前应用。另请参阅
通过将此矩阵与
point进行后乘来映射point。矩阵在点之前应用。另请参阅
通过将此矩阵乘以
point(通过假设w坐标为1.0扩展为4D向量)来映射point。矩阵在点之前应用。通过将此矩阵乘以
point来映射point。矩阵在点之前应用。另请参阅
通过将此矩阵与
rect的角相乘,然后从结果中形成一个新的矩形来映射rect。返回的矩形将是一个普通的2D矩形,其边与水平和垂直轴平行。另请参阅
通过将此矩阵与
rect的角相乘,然后从结果中形成一个新的矩形来映射rect。返回的矩形将是一个普通的2D矩形,其边与水平和垂直轴平行。另请参阅
通过将此矩阵的顶部3x3部分乘以
vector来映射vector。此矩阵的平移和投影部分被忽略。矩阵在向量之前应用。另请参阅
- normalMatrix()¶
- Return type:
返回与此4x4变换对应的法线矩阵。法线矩阵是此4x4矩阵左上角3x3部分的逆矩阵的转置。如果3x3子矩阵不可逆,此函数返回单位矩阵。
另请参阅
- __ne__(other)¶
- Parameters:
其他 –
QMatrix4x4- Return type:
布尔
如果此矩阵与
other不完全相同,则返回true;否则返回false。此运算符使用精确的浮点数比较。- __mul__(m2)¶
- Parameters:
m2 –
QMatrix4x4- Return type:
返回
m1和m2的乘积。- __mul__(factor)
- Parameters:
factor – 浮点数
- Return type:
返回将
matrix的所有元素乘以factor的结果。- __mul__(factor)
- Parameters:
factor – 浮点数
- Return type:
返回将
matrix的所有元素乘以factor的结果。- __imul__(other)¶
- Parameters:
其他 –
QMatrix4x4- Return type:
将此矩阵与
other的内容相乘。- __imul__(factor)
- Parameters:
factor – 浮点数
- Return type:
这是一个重载函数。
将此矩阵的所有元素乘以
factor。- __add__(m2)¶
- Parameters:
m2 –
QMatrix4x4- Return type:
返回
m1和m2的和。- __iadd__(other)¶
- Parameters:
其他 –
QMatrix4x4- Return type:
将
other的内容添加到此矩阵中。- __sub__()¶
- Return type:
这是一个重载函数。
返回
matrix的否定。- __sub__(m2)
- Parameters:
m2 –
QMatrix4x4- Return type:
返回
m1和m2的差值。- __isub__(other)¶
- Parameters:
其他 –
QMatrix4x4- Return type:
从这个矩阵中减去
other的内容。- __div__(divisor)¶
- Parameters:
除数 – float
- Return type:
返回将
matrix的所有元素除以divisor的结果。- operator/=(divisor)
- Parameters:
除数 – float
- Return type:
这是一个重载函数。
将此矩阵的所有元素除以
divisor。- __eq__(other)¶
- Parameters:
其他 –
QMatrix4x4- Return type:
布尔
如果此矩阵与
other完全相同,则返回true;否则返回false。此运算符使用精确的浮点数比较。- optimize()¶
优化此矩阵的使用,从其当前元素开始。
一些操作,如
translate()、scale()和rotate(),如果已知被修改的矩阵已经是单位矩阵、之前的translate()、之前的scale()等,则可以更高效地执行。通常情况下,
QMatrix4x4类会在执行操作时内部跟踪这种特殊类型。然而,如果矩阵直接通过operator()(int, int) 或data()进行修改,那么QMatrix4x4将失去对这种特殊类型的跟踪,并在此后恢复到最安全但效率最低的操作。在直接修改矩阵后调用optimize(),程序员可以强制
QMatrix4x4恢复特殊类型,如果元素看起来符合已知的优化类型之一。另请参阅
operator()(int, int)data()translate()这是一个重载函数。
将此矩阵与另一个矩阵相乘,该矩阵应用了一个正交投影,用于由
rect指定边界的窗口。近裁剪面和远裁剪面将分别为-1和1。另请参阅
- ortho(rect)
- Parameters:
矩形 –
QRectF
这是一个重载函数。
将此矩阵与另一个矩阵相乘,该矩阵应用了一个正交投影,用于由
rect指定边界的窗口。近裁剪面和远裁剪面将分别为-1和1。另请参阅
- ortho(left, right, bottom, top, nearPlane, farPlane)
- Parameters:
left – 浮点数
right – 浮点数
bottom – 浮点数
top – 浮点数
nearPlane – 浮点数
farPlane – float
将此矩阵与另一个矩阵相乘,该矩阵为左下角为 (
left,bottom),右上角为 (right,top) 的窗口应用正交投影,并指定nearPlane和farPlane裁剪平面。另请参阅
- perspective(verticalAngle, aspectRatio, nearPlane, farPlane)¶
- Parameters:
verticalAngle – 浮点数
aspectRatio – 浮点数
nearPlane – 浮点数
farPlane – float
将此矩阵与另一个应用透视投影的矩阵相乘。垂直视场角将在具有给定
aspectRatio的窗口内为verticalAngle度,该比率决定了水平视场角。投影将具有指定的nearPlane和farPlane裁剪平面,这些平面是从观察者到相应平面的距离。- projectedRotate(angle, x, y, z)¶
- Parameters:
angle – 浮点数
x – 浮点数
y – 浮点数
z – 浮点数
- projectedRotate(angle, x, y, z, distanceToPlane)
- Parameters:
angle – 浮点数
x – 浮点数
y – 浮点数
z – 浮点数
distanceToPlane – 浮点数
- rotate(quaternion)¶
- Parameters:
四元数 –
QQuaternion
将此矩阵与另一个根据指定的
quaternion旋转坐标的矩阵相乘。假设quaternion已被归一化。- rotate(angle, vector)
- Parameters:
angle – 浮点数
向量 –
QVector3D
将此矩阵与另一个矩阵相乘,该矩阵通过
angle度绕vector旋转坐标。另请参阅
- rotate(angle, x, y[, z=0.0f])
- Parameters:
angle – 浮点数
x – 浮点数
y – 浮点数
z – 浮点数
这是一个重载函数。
将此矩阵与另一个矩阵相乘,该矩阵通过向量 (
x,y,z) 旋转坐标angle度。另请参阅
返回行
index的元素作为一个4D向量。将此矩阵与另一个矩阵相乘,该矩阵通过
vector的分量缩放坐标。另请参阅
- scale(factor)
- Parameters:
factor – 浮点数
这是一个重载函数。
将此矩阵与另一个按给定
factor缩放坐标的矩阵相乘。另请参阅
- scale(x, y)
- Parameters:
x – 浮点数
y – 浮点数
这是一个重载函数。
将此矩阵与另一个按组件
x和y缩放坐标的矩阵相乘。另请参阅
- scale(x, y, z)
- Parameters:
x – 浮点数
y – 浮点数
z – 浮点数
这是一个重载函数。
将此矩阵与另一个按组件
x、y和z缩放坐标的矩阵相乘。另请参阅
将列
index的元素设置为value的组件。将行
index的元素设置为value的组件。另请参阅
- setToIdentity()¶
将此矩阵设置为单位矩阵。
另请参阅
- toTransform()¶
- Return type:
返回与此矩阵对应的常规Qt 2D变换矩阵。
返回的
QTransform是通过简单地删除QMatrix4x4的第三行和第三列形成的。这适用于实现正交投影,其中z坐标应该被丢弃而不是投影。- toTransform(distanceToPlane)
- Parameters:
distanceToPlane – 浮点数
- Return type:
返回与此矩阵对应的常规Qt 2D变换矩阵。
如果
distanceToPlane不为零,则表示用于调整 z 坐标的投影因子。值 1024 对应于rotate()用于 x 和 y 轴的投影因子。如果
distanceToPlane为零,则返回的QTransform是通过简单地删除QMatrix4x4的第三行和第三列形成的。这适用于实现正交投影,其中 z 坐标应该被删除而不是投影。将此矩阵乘以另一个矩阵,该矩阵通过
vector的分量来平移坐标。- translate(x, y)
- Parameters:
x – 浮点数
y – 浮点数
这是一个重载函数。
将此矩阵与另一个矩阵相乘,该矩阵通过分量
x和y转换坐标。- translate(x, y, z)
- Parameters:
x – 浮点数
y – 浮点数
z – 浮点数
这是一个重载函数。
将此矩阵与另一个矩阵相乘,该矩阵通过分量
x、y和z来平移坐标。- transposed()¶
- Return type:
返回此矩阵,关于其对角线转置。
这是一个重载函数。
设置视口变换,视口由
rect界定,近和远分别设置为0和1。- viewport(left, bottom, width, height[, nearPlane=0.0f[, farPlane=1.0f]])
- Parameters:
left – 浮点数
bottom – 浮点数
width – 浮点数
height – 浮点数
nearPlane – 浮点数
farPlane – float
将此矩阵与另一个执行OpenGL用于从归一化设备坐标(NDC)转换到视口(窗口)坐标的缩放和偏置变换的矩阵相乘。也就是说,它将每个维度上范围在[-1, 1]的立方体中的点映射到视口,视口的近左下角位于(
left,bottom,nearPlane),大小为(width,height,farPlane-nearPlane)。这与由函数glViewport()和glDepthRange()控制的固定功能OpenGL视口变换所使用的变换相匹配。