Qt编程中的模型视图投影矩阵设置

2024-04-19 09:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个盒子,我想使用Qpainter绘制。结果不是我所期望的。 我有以下几点:

PyQt5.QtGui.QVector4D(-50.0, -50.0, -50.0, 1.0),
 PyQt5.QtGui.QVector4D(50.0, -50.0, -50.0, 1.0),
 PyQt5.QtGui.QVector4D(50.0, 50.0, -50.0, 1.0),
 PyQt5.QtGui.QVector4D(-50.0, 50.0, -50.0, 1.0),
 PyQt5.QtGui.QVector4D(-50.0, -50.0, 50.0, 1.0),
 PyQt5.QtGui.QVector4D(50.0, -50.0, 50.0, 1.0),
 PyQt5.QtGui.QVector4D(50.0, 50.0, 50.0, 1.0),
 PyQt5.QtGui.QVector4D(-50.0, 50.0, 50.0, 1.0)

它定义了一个立方体。 我设置投影,并按如下方式查看矩阵:

xc, yc, zc = 0, 0, 0
Diam = 173*2*1.5
znear = .1
zfar = znear + Diam

我把marices设置成这样:

mV.lookAt(QVector3D(2*Diam, 0, 0), QVector3D(xc, yc, zc), QVector3D(0, 1, 0))
mP.perspective(60, 4/3.0, znear, zfar)
mP.viewport(0, 0, 800, 600)

然后是modelview矩阵 变成 mvp = mP*mV*mM;其中mM是单位矩阵

我使用齐次坐标绘制直线:

qp.drawLine(int(p.x()/p.w()), int((p.y()/p.w())), int(q.x()/q.w()), int(q.y()/q.w()))

其中p = mvp*Pq = mvp*Q、p和Q是正确连接的立方体顶点。enter image description here

我希望看到一个立方体,投影到我的窗口中心。然而,结果附呈。 我知道我做错了什么,但我一直无法找出问题所在。请帮忙


Tags: 绘制zc矩阵mppyqt5int投影xc