Qt中QOpengl的QMatrix4x4矩阵作用原理以及使用方法
1、矩阵具有坐标变换的作用,例如:左乘一个旋转矩阵,实现点的坐标旋转,左乘一个平移矩阵实现,点的平移
2、一个点可以同时串联相乘几个变换矩阵,实现坐标连续变换,根据左乘规则,右边矩阵先作用于点,作用顺序从右往左,例如:C*B*A*point(注:C,B,A分别为变换矩阵,point为一个vector3的位置向量,即点的x,y,z坐标)运算式子,矩阵A先作用于point,其次是B,C
3、QMatrix4x4矩阵类本身就支持translate,rotate,projection等连续变换函数,那么问题来了,这些变换的作用顺序是怎么样的,实际上和上面说的矩阵作用规则是一样的。
顺序是按照后变换,先作用的,具体如下,
matrix.perspective(45,w/h,0.1,100); // 透视矩阵变换
matrix.translate(0.8,0,-5); // 平移变换
matrix.rotate(30,0,1,0) // 绕着y轴旋转30度
matrix*point; // 注:此时这给点是先执行了旋转,再平移,最后透视处理。
// 而不是从上往下顺序,先透视,再平移和旋转
上面代码作用等同于如下代码:
matrix1.perspective(45,w/h,0.1,100); // 用一个单独矩阵,透视矩阵变换
matrix2.translate(0.8,0,-5); // 用另一个单独矩阵,平移变换
matrix3.rotate(30,0,1,0) // 再用一个单独矩阵,绕着y轴旋转30度
Qt中QOpengl的QMatrix4x4矩阵作用原理以及使用方法相关推荐
- QT中ui更改后不能更新的解决方法
QT中ui更改后不能更新的解决方法 参考文章: (1)QT中ui更改后不能更新的解决方法 (2)https://www.cnblogs.com/qiaozhoulin/p/4509939.html 备 ...
- qt5设置linux系统时间,Qt中使用QLabel显示时间的两种方法
Qt中使用QLabel显示时间的两种方法思路一致,只是实现方法不一样而已. main.cpp #include "displaytime.h" #include int main( ...
- 在QT中自定义头文件和源文件的使用方法
在QT中自定义头文件和源文件的使用方法 最近想用QT来实现一个简单的功能,为了便于函数的集成需要将功能函数进行封装,自己补了些c++的函数封装方法,发现在QT中还不太一样.接来下简单介绍一下具体怎么实 ...
- Qt中,软件多语言国际化翻译的方法与步骤
Qt中,软件多语言国际化翻译的方法与步骤 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法 ...
- 在QT中使用同步阻塞式HTTP请求的方法
QT中对HttpRequest的实现是利用了QT的singal-slot实现的异步请求,虽然有时这很有用,比如节约时间,不会使UI卡住等,但有时,我们还是需要阻塞式的同步HTTP请求,因为在这个HTT ...
- QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...
- Qt中常用的3种提示框设计方法
Qt中常用的提示信息设计方法 [问题背景]通常,在项目项目开发的过程中,某些人机交互界面需要对用户的输入数据进行合法性判断,如果用户输入数据合法,则进入下一步流程,否则,就要给出相应的错误提示,以提示 ...
- qt中记录数据的一次接收处理方法
引言 在udp通信中,发送请求后,等待接收端的响应,有时一个回应被分割成好几次发送,这种反馈的形式出现带有随机性,正常的情况下是一次反馈所有的数据,但是会出现一次反馈被分成好几次反馈.像下面这样: 请 ...
- Qt中提示“常量中有换行符“的解决方法
使用QT编译界面时,免不了要使用中文,有会出现乱码,有时会提示"常量中有换行符",而不能正常编译,因此可以通过下面的方法解决. PS:本文的环境,QT5.7.1,VS2015 1 ...
最新文章
- 简单的分页控件(原创)
- 不合法的媒体文件 id_注意!伦敦男孩、DKNY、Coach、地素... 这些品牌的服装,抽检不合格...
- gitbash如何修改可恶的蓝色字体
- 一颗钉子能承受多大的重量?
- Linux 文件颜色含义
- 清除Linux终端命令的历史记录
- CentOS7 (64位) 下QT5.5 连接MySQL数据库(driver not loaded)
- nyoj---快速查找素数
- CSS伪选择器的使用-遁地龙卷风
- Excel添加下拉选项菜单的方法
- python实现斗地主发牌洗牌
- 计算机考研数据库题库
- do vis是什么意思_duck不必什么梗?李佳琦放过鸭子吧表情包
- cacti更改显示图像的title
- c语言的心形字符,C语言写的各种心形图案
- 全面理解面向对象的 JavaScript
- 公司新加了一台友宝自动售货机引发的思考-适配器模式
- win10未能解析服务器名,win10系统提示“无法解析服务器的dns地址”的修复方法...
- 华为路由交换RS 部分题库分享
- android 视频裁剪view拖动,android – 视频使用特定坐标裁剪或缩放?