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;? ? ?//?先执行了旋转,再平移,最后透视处理
  • 相关阅读:
    SpringBoot: 2.SpringBoot整合servlet(转)
    SpringBoot: 1.创建第一个SpringBoot项目(转)
    SqlServer:SqlServer(服务器磁盘监控,创建管理员账号分配权,添加链接服务器,查询CPU,查询内存)
    Log parser工具使用
    目录爆破工具
    安装腾讯QQ问题记录
    Sql Server 2017 安装问题记录
    reGeorg+Proxifier使用
    Swaks
    python2.7 安装pycrypto库报错
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10019627.html
Copyright © 2011-2022 走看看