- 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()
另请参阅
QVector3D
QGenericMatrix
- 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视口转换使用的转换相匹配。