PySide6.QtGui.QMatrix4x4

class QMatrix4x4

QMatrix4x4 类表示3D空间中的4x4变换矩阵。更多

在版本4.6中添加。

概要

方法

注意

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

详细描述

QMatrix4x4 类通常被视为行主序矩阵,因为构造函数和 operator() 函数接受行主序格式的数据,这在 C 风格的使用中很常见。

内部数据以列主序格式存储,以便最佳地传递给期望列主序数据的OpenGL函数。

使用这些函数时请注意,它们以列主序格式返回数据:

  • data()

  • constData()

另请参阅

QVector3D QGenericMatrix

class Flag
__init__()

构造一个单位矩阵。

__init__(transform)
Parameters:

transformQTransform

从传统的Qt 2D变换矩阵transform构造一个4x4矩阵。

如果 transform 具有特殊类型(如 identity、translate、scale 等),程序员应在构造函数后调用 optimize(),如果他们希望 QMatrix4x4 进一步优化对 translate()scale() 等的调用。

另请参阅

toTransform() optimize()

__init__(values)
Parameters:

– 浮点数

从给定的16个浮点数values构造一个矩阵。假设数组values的内容是按行优先顺序排列的。

如果矩阵具有特殊类型(单位矩阵、平移、缩放等),程序员应在调用此构造函数后调用optimize(),如果他们希望QMatrix4x4优化对translate()scale()等的进一步调用。

另请参阅

copyDataTo() optimize()

__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个元素m11m12m13m14m21m22m23m24m31m32m33m34m41m42m43m44构造一个矩阵。这些元素按行优先顺序指定。

如果矩阵具有特殊类型(如单位矩阵、平移矩阵、缩放矩阵等),程序员应在调用此构造函数后调用optimize(),如果他们希望QMatrix4x4优化对translate()scale()等的进一步调用。

另请参阅

optimize()

__dummy(arg__1)
Parameters:

arg__1 – 浮点数列表

__mgetitem__()
Return type:

对象

__reduce__()
Return type:

字符串

__repr__()
Return type:

字符串

column(index)
Parameters:

索引 – int

Return type:

QVector4D

返回列index的元素作为一个4D向量。

另请参阅

setColumn() row()

copyDataTo()
Return type:

元组

检索此矩阵中的16个项目,并将它们按行优先顺序复制到values中。

determinant()
Return type:

浮点数

返回此矩阵的行列式。

fill(value)
Parameters:

value – 浮点数

value填充此矩阵的所有元素。

flags()
Return type:

Flag的组合

flipCoordinates()

通过将 y 和 z 坐标乘以 -1,在右手坐标系和左手坐标系之间切换。这通常用于创建左手正交视图,而不会像 ortho() 那样缩放视口。

另请参阅

ortho()

frustum(left, right, bottom, top, nearPlane, farPlane)
Parameters:
  • left – 浮点数

  • right – 浮点数

  • bottom – 浮点数

  • top – 浮点数

  • nearPlane – 浮点数

  • farPlane – float

将此矩阵与另一个矩阵相乘,该矩阵为左下角为(left, bottom),右上角为(right, top)的窗口应用透视截头体投影,并指定nearPlanefarPlane裁剪平面。

另请参阅

ortho() perspective()

inverted()
Return type:

PyTuple

返回此矩阵的逆矩阵。如果此矩阵无法求逆,则返回单位矩阵;即determinant()为零。如果invertible不为空,则如果矩阵可以求逆,则会将true写入该位置;否则为false。

如果矩阵被识别为单位矩阵或正交矩阵,那么此函数将使用优化例程快速反转矩阵。

isAffine()
Return type:

布尔

如果此矩阵是仿射矩阵,则返回true;否则返回false。

仿射矩阵是一个4x4矩阵,其第三行等于(0, 0, 0, 1),例如没有投影系数。

另请参阅

isIdentity()

isIdentity()
Return type:

布尔

如果此矩阵是单位矩阵,则返回 true;否则返回 false。

另请参阅

setToIdentity()

lookAt(eye, center, up)
Parameters:

将此矩阵乘以从视点派生的视图矩阵。center 值表示 eye 所注视的视图中心。up 值表示相对于 eye 应该被视为向上的方向。

注意

up 向量不能与从 eyecenter 的视线平行。

map(point)
Parameters:

QPoint

Return type:

QPoint

通过将此矩阵乘以point来映射point。矩阵在点之前应用。

另请参阅

mapRect()

map(point)
Parameters:

QPointF

Return type:

QPointF

通过将此矩阵与point进行后乘来映射point。矩阵在点之前应用。

另请参阅

mapRect()

map(point)
Parameters:

QVector3D

Return type:

QVector3D

通过将此矩阵乘以point(通过假设w坐标为1.0扩展为4D向量)来映射point。矩阵在点之前应用。

注意

此函数与mapVector()不同。对于点,始终使用map()mapVector()仅适用于向量(方向)。

另请参阅

mapRect() mapVector()

map(point)
Parameters:

QVector4D

Return type:

QVector4D

通过将此矩阵乘以point来映射point。矩阵在点之前应用。

另请参阅

mapRect()

mapRect(rect)
Parameters:

rectQRect

Return type:

QRect

通过将此矩阵与rect的角相乘,然后从结果中形成一个新的矩形来映射rect。返回的矩形将是一个普通的2D矩形,其边与水平和垂直轴平行。

另请参阅

map()

mapRect(rect)
Parameters:

矩形QRectF

Return type:

QRectF

通过将此矩阵与rect的角相乘,然后从结果中形成一个新的矩形来映射rect。返回的矩形将是一个普通的2D矩形,其边与水平和垂直轴平行。

另请参阅

map()

mapVector(vector)
Parameters:

向量QVector3D

Return type:

QVector3D

通过将此矩阵的顶部3x3部分乘以vector来映射vector。此矩阵的平移和投影部分被忽略。矩阵在向量之前应用。

另请参阅

map()

normalMatrix()
Return type:

QMatrix3x3

返回与此4x4变换对应的法线矩阵。法线矩阵是此4x4矩阵左上角3x3部分的逆矩阵的转置。如果3x3子矩阵不可逆,此函数返回单位矩阵。

另请参阅

inverted()

__ne__(other)
Parameters:

其他QMatrix4x4

Return type:

布尔

如果此矩阵与other不完全相同,则返回true;否则返回false。此运算符使用精确的浮点数比较。

__mul__(m2)
Parameters:

m2QMatrix4x4

Return type:

QMatrix4x4

返回m1m2的乘积。

__mul__(factor)
Parameters:

factor – 浮点数

Return type:

QMatrix4x4

返回将matrix的所有元素乘以factor的结果。

__mul__(factor)
Parameters:

factor – 浮点数

Return type:

QMatrix4x4

返回将matrix的所有元素乘以factor的结果。

__imul__(other)
Parameters:

其他QMatrix4x4

Return type:

QMatrix4x4

将此矩阵与other的内容相乘。

__imul__(factor)
Parameters:

factor – 浮点数

Return type:

QMatrix4x4

这是一个重载函数。

将此矩阵的所有元素乘以factor

__add__(m2)
Parameters:

m2QMatrix4x4

Return type:

QMatrix4x4

返回m1m2的和。

__iadd__(other)
Parameters:

其他QMatrix4x4

Return type:

QMatrix4x4

other的内容添加到此矩阵中。

__sub__()
Return type:

QMatrix4x4

这是一个重载函数。

返回matrix的否定。

__sub__(m2)
Parameters:

m2QMatrix4x4

Return type:

QMatrix4x4

返回m1m2的差值。

__isub__(other)
Parameters:

其他QMatrix4x4

Return type:

QMatrix4x4

从这个矩阵中减去other的内容。

__div__(divisor)
Parameters:

除数 – float

Return type:

QMatrix4x4

返回将matrix的所有元素除以divisor的结果。

operator/=(divisor)
Parameters:

除数 – float

Return type:

QMatrix4x4

这是一个重载函数。

将此矩阵的所有元素除以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()

ortho(rect)
Parameters:

rectQRect

这是一个重载函数。

将此矩阵与另一个矩阵相乘,该矩阵应用了一个正交投影,用于由rect指定边界的窗口。近裁剪面和远裁剪面将分别为-1和1。

另请参阅

frustum() perspective()

ortho(rect)
Parameters:

矩形QRectF

这是一个重载函数。

将此矩阵与另一个矩阵相乘,该矩阵应用了一个正交投影,用于由rect指定边界的窗口。近裁剪面和远裁剪面将分别为-1和1。

另请参阅

frustum() perspective()

ortho(left, right, bottom, top, nearPlane, farPlane)
Parameters:
  • left – 浮点数

  • right – 浮点数

  • bottom – 浮点数

  • top – 浮点数

  • nearPlane – 浮点数

  • farPlane – float

将此矩阵与另一个矩阵相乘,该矩阵为左下角为 (left, bottom),右上角为 (right, top) 的窗口应用正交投影,并指定 nearPlanefarPlane 裁剪平面。

另请参阅

frustum() perspective()

perspective(verticalAngle, aspectRatio, nearPlane, farPlane)
Parameters:
  • verticalAngle – 浮点数

  • aspectRatio – 浮点数

  • nearPlane – 浮点数

  • farPlane – float

将此矩阵与另一个应用透视投影的矩阵相乘。垂直视场角将在具有给定aspectRatio的窗口内为verticalAngle度,该比率决定了水平视场角。投影将具有指定的nearPlanefarPlane裁剪平面,这些平面是从观察者到相应平面的距离。

另请参阅

ortho() frustum()

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度绕vector旋转坐标。

另请参阅

scale() translate()

rotate(angle, x, y[, z=0.0f])
Parameters:
  • angle – 浮点数

  • x – 浮点数

  • y – 浮点数

  • z – 浮点数

这是一个重载函数。

将此矩阵与另一个矩阵相乘,该矩阵通过向量 (x, y, z) 旋转坐标 angle 度。

另请参阅

scale() translate()

row(index)
Parameters:

索引 – int

Return type:

QVector4D

返回行index的元素作为一个4D向量。

另请参阅

setRow() column()

scale(vector)
Parameters:

向量QVector3D

将此矩阵与另一个矩阵相乘,该矩阵通过vector的分量缩放坐标。

另请参阅

translate() rotate()

scale(factor)
Parameters:

factor – 浮点数

这是一个重载函数。

将此矩阵与另一个按给定factor缩放坐标的矩阵相乘。

另请参阅

translate() rotate()

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

  • y – 浮点数

这是一个重载函数。

将此矩阵与另一个按组件 xy 缩放坐标的矩阵相乘。

另请参阅

translate() rotate()

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

  • y – 浮点数

  • z – 浮点数

这是一个重载函数。

将此矩阵与另一个按组件 xyz 缩放坐标的矩阵相乘。

另请参阅

translate() rotate()

setColumn(index, value)
Parameters:

将列index的元素设置为value的组件。

另请参阅

column() setRow()

setRow(index, value)
Parameters:

将行index的元素设置为value的组件。

另请参阅

row() setColumn()

setToIdentity()

将此矩阵设置为单位矩阵。

另请参阅

isIdentity()

toTransform()
Return type:

QTransform

返回与此矩阵对应的常规Qt 2D变换矩阵。

返回的QTransform是通过简单地删除QMatrix4x4的第三行和第三列形成的。这适用于实现正交投影,其中z坐标应该被丢弃而不是投影。

toTransform(distanceToPlane)
Parameters:

distanceToPlane – 浮点数

Return type:

QTransform

返回与此矩阵对应的常规Qt 2D变换矩阵。

如果 distanceToPlane 不为零,则表示用于调整 z 坐标的投影因子。值 1024 对应于 rotate() 用于 x 和 y 轴的投影因子。

如果 distanceToPlane 为零,则返回的 QTransform 是通过简单地删除 QMatrix4x4 的第三行和第三列形成的。这适用于实现正交投影,其中 z 坐标应该被删除而不是投影。

translate(vector)
Parameters:

向量QVector3D

将此矩阵乘以另一个矩阵,该矩阵通过vector的分量来平移坐标。

另请参阅

scale() rotate()

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

  • y – 浮点数

这是一个重载函数。

将此矩阵与另一个矩阵相乘,该矩阵通过分量 xy 转换坐标。

另请参阅

scale() rotate()

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

  • y – 浮点数

  • z – 浮点数

这是一个重载函数。

将此矩阵与另一个矩阵相乘,该矩阵通过分量 xyz 来平移坐标。

另请参阅

scale() rotate()

transposed()
Return type:

QMatrix4x4

返回此矩阵,关于其对角线转置。

viewport(rect)
Parameters:

矩形QRectF

这是一个重载函数。

设置视口变换,视口由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视口变换所使用的变换相匹配。