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;? ? ?//?先执行了旋转,再平移,最后透视处理
  • 相关阅读:
    [android] 帧布局
    [android] 表格布局和绝对布局
    使用LVS实现负载均衡原理及安装配置详解
    学习Docker之Dockerfile的命令
    使用docker-compose部署nginx
    CentOS Bash 命令补全增强软件包 bash-completion
    “三次握手,四次挥手”你真的懂吗?
    0777 0的意思
    linux文件或目录权限修改后如何恢复(备份了权限就能恢复)
    centos7进入单用户模式
  • 原文地址:https://www.cnblogs.com/zhangyanran/p/10019627.html
Copyright © 2011-2022 走看看