Qt中QOpengl的QMatrix4x4矩阵作用原理以及使用方法

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎联系我qq2488890051 https://blog.csdn.net/kangkanglhb88008/article/details/80537544

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度

        matrix1*matrix2*matrix3*point;             // 先执行了旋转,再平移,最后透视处理


欢迎联系我qq2488890051

猜你喜欢

转载自blog.csdn.net/kangkanglhb88008/article/details/80537544