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等连续变换函数,那么问题来了,qs这些变换的作用顺序是怎么样的,实际上和上面说的矩阵作用规则是一样的。
顺序是按照后变换,先作用的,具体如下,
? ? 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度
最新文章
- Eclipse下配置javaweb项目快速部署到tomcat
- 【CityHunter】服务器端设计思路
- C#关于winforms窗体大小、边框、移动、动画等属性
- MYSQL数据库的常用数据类型
- 菜鸟类库诞生记二:通过反射转换DataRow为对象
- Surround the Trees---hdu1392(凸包GraHam模板)
- Redis集群战法整理
- Unix文件操作
- [转]JAVA自动装箱和拆箱
- Asp.net MVC 简单实现生成Excel并下载
- Java ORM Hibernate 入门笔记
- Ubuntu系统下配置IP地址方法介绍
- JS判断图片是否加载完成 背景图404 快到碗里来
- 将自己的ubuntu18.04打包成镜像
- ux.form.field.Password 密码与非密码状态切换
- node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
- variable 'o' used without having been completely initialized Compiling Vertex program
- 初识python函数
- NOIP2018初赛 解题报告(C++普及)
- JSP禁用缓存的方式 response.setHeader( ";Pragma";, ";no-cache"; ); setDateHeader(";Expires";, 0);