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