• 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;? ? ?//?先执行了旋转,再平移,最后透视处理
  • 相关阅读:
    自顶向下的单元测试策略
    孤立的测试策略
    单元测试
    控制流与数据流,信息流
    白盒测试的特点
    白盒测试
    黑盒测试优缺点
    appium对博客园APP进行自动化测试
    招聘测试人员,我在面试什么?
    测试开发这一年
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10019627.html
Copyright © 2020-2023  润新知