zoukankan      html  css  js  c++  java
  • 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度

    ? ? matrix1*matrix2*matrix3*point;? ? ?//?先执行了旋转,再平移,最后透视处理
  • 相关阅读:
    npm 如何查看一个包的版本信息?
    npm使用常见问题及注意事项
    npm依赖管理:冗余,依赖树
    删除cnpm
    SQL Server 2012 读写分离设置
    SQL Server AlwaysOn读写分离配置
    Sql server Always On 读写分离配置方法
    Sqlserver 2012 Always on技术
    构建高性能web之路------mysql读写分离实战
    EJB配置jboss数据源
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10019627.html
Copyright © 2011-2022 走看看