提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
QMatrix4x4
QMatrix4x4是干什么的?
提示:这里可以添加本文要记录的大概内容:
例如:Opengl QMatrix4x4 变换 适用于pyqt5。QMatrix4x4主要是为了获取一个4X4的矩阵,让我们所需点与这个矩阵相乘可以实现这个点的空间变换!在GSLS着色语言中为一个mat4类型。
提示:以下是本篇文章正文内容,下面案例可供参考
一、QMatrix4x4常用方法
setToIdentity()
初始化矩阵为单位矩阵!在一个变换开始时,如果定义的QMatrix4x4变量是个类变量,或全局变量,如下`self.mModel在第二次做不同变幻是需要初始化为单位矩阵!代替方法可在每一种变幻时初始化一个新的 QMatrix4x4;
class RenderManager():
def __init__(self):
self.mModel = QMatrix4x4()
self.mModel.setToIdentity()
scale(width, height)
缩放矩阵,参数为缩放比例,分别对应宽和高!
(1,1)为原始的不变!
mat4 = QMatrix4x4()
mat4.scale(1,1)
perspective(45, self.width/self.height,0.1 , 100.0)
透视矩阵变换,具体参数参考Qt文档这里提供了常用例子基本不变!
width = self.width()
height = self.height()
mat4.perspective(45, width/height,0.1 , 100.0)
translate(1.0, 1.0, 0.0)
平移,将(0,0,0)平移到(1.0,1.0,0.0)的位置。
mat4 = QMatrix4x4()
mat4.translate(1.0, 1.0, 0.0)
rotate(30,0,1,0)
旋转矩阵,第一个参数度数, 剩下三个参数为选择旋转轴
以下mat4为绕y轴旋转-15度。
mat4 = QMatrix4x4()
mat4.rotate(-15,0,1,0)
lookAt(QVector3D(0.0, 0.0, 0.5), QVector3D(0.0, 0.0, 0.0), QVector3D(0.0, 1.0, 0.0))
参数为三个QVector3D,分别为摄像机位置,摄像机看的点位,最后是摄像机上方的朝向
mat4 = QMatrix4x4()
mat4.lookAt(QVector3D(0.0, 0.0, 0.3), QVector3D(0.0, 0.0, 0.0),QVector3D(0.0, 1.0, 0.0))
data()
这个方法可以获得该矩阵的所有元素值!
二、使用例子
1.使用方法
以下两种方式得到的矩阵相同
# 方法一
mat4 = QMatrix4x4()
mat4.scale(1,1)
mat4.translate(1.0, 1.0, 0.0)
mat4.rotate(-15,0,1,0)
#方法二
mat4_1 = QMatrix4x4()
mat4_1.scale(1,1)
mat4_2 = QMatrix4x4()
mat4_2.translate(1.0, 1.0, 0.0)
mat4_3 = QMatrix4x4()
mat4_3.rotate(-15,0,1,0)
mat4 = mat4_1 * mat4_2 * mat4_3
---
# 总结
如有后续学习会更新!
版权声明:本文为CxzKkgg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。