zoukankan      html  css  js  c++  java
  • glm初试,关于行矩阵列矩阵问题

    /***
        * glm中矩阵是行优先存储的,这不同于opengl默认的以列优先存储的方式??,以下面矩阵mat为例
        * 它是用四个行向量来模拟存储四个行:vec4 value[4],其中
        * value[0] = (1,0,0,0) = (m[0][0],m[0][1],m[0][2],m[0][3])
        * value[1] = (0,1,0,0) = (m[1][0],m[1][1],m[1][2],m[1][3])
        * value[2] = (0,0,1,0) = (m[2][0],m[2][1],m[2][2],m[2][3])
        * value[3] = (1,1,1,1) = (m[3][0],m[3][1],m[3][2],m[3][3])
        * 这个存储与opengl从直观看是不一样的,它的平移部分存储到了第四行,而不是第四列,与DX的写法一致
        */
        glm::mat4 mat = mat4(
            1, 0, 0, 0,
            0, 1, 0, 0,
            0, 0, 1, 0,
            1, 1, 1, 1
        );
    
    
        glm::vec4 v(1, 2, 3, 1);
        
        /*** 
        * 矩阵与向量向乘规则,遵守opengl的谁在前谁是列向量的规则
        * 矩阵在前则矩阵看成是四个列向量,向量在后则为一个行向量
        * 向量在前则向量看成一个列向量,矩阵在后则视为四个行向量
        */
        /***
        * 【矩阵与向量相乘,一般的用法是矩阵在左向量在右】
        * 如下运算是把mat看作四个列向量,V看作行向量:(1*1+0*2+0*3+1*1, 0*1+1*2+0*3+1*1, 0*1+0*2+1*3+1*1, 0*1+0*2+0*3+1*1) = (2,3,4,1)
        */
        auto vt = mat * v; //结果是(2,3,4,1)
    
        mat4 m2(
            1, 4, 6, 8,
            2, 1, 7, 9,
            3, 5, 1, 0,
            0, 0, 0, 0
        );
    
        /***
        *【总结】
        * 1, glm中矩阵的存储是按行存储的,与DX一致
        * 2, glm中左矩阵右向量的乘法=DX的左向量右矩阵乘法
        * 由以上两点可以,在使用glm库时只需要注意矩阵与向量的写法,内部原理与运算可按DX来看
        * 比如上面的运算按DX来算
        * (1,2,3,1) * (1,0,0,0) = (1*1+2*0+3*0+1*1,1*0+2*1+3*0+1*1, 1*0+2*0+3*1+1*1, 1*0+2*0+3*0+1*1) = (2,3,4,1)
                      (0,1,0,0)
                     (0,0,1,0)
                     (1,1,1,1)
        */
    
        //translate运算是将1,2,3 添加到矩阵的第四行,结果为value[3] = 1,2,3,1
        auto m3 = glm::translate(vec3(1, 2, 3));
  • 相关阅读:
    Python的if判断与while循环
    python基础之数据类型与变量
    网络基础之网络协议篇
    操作系统简介
    计算机基础之计算机硬件系统
    从头开始编写一个Orchard网上商店模块(3)
    从头开始编写一个Orchard网上商店模块(2)
    从头开始编写一个Orchard网上商店模块(1)
    var和dynamic的区别及如何正确使用dynamic ?
    [DOM Event Learning] Section 3 jQuery事件处理基础 on(), off()和one()方法使用
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/11382911.html
Copyright © 2011-2022 走看看