美文网首页
向量 & 矩阵

向量 & 矩阵

作者: ChenL | 来源:发表于2020-07-25 15:04 被阅读0次

    向量:

    在3D笛卡尔坐标系中,A点在XYZ轴上对应的位置分别为OC,OD,OB,在X轴上,我们用X(蓝色部分)(1,0,0)表示长度为1的向量为单位向量(Y轴,Z轴以此类推)。OA的向量就可以表示为{x,y,z};

    向量的乘法

    点乘只能发生在两个向量之间,且点乘时,两向量必须是单位向量,如果不是,需要将向量进行单位化后,再点乘,所以我们在两个向量点乘的时候,如果不是单位向量,我们必须先转化为单位向量

    两单位向量点乘,最后得到的结果是两个向量之间的夹角,即余弦(cos值)

    如果OA和OB不是单位向量,先转化为单位向量,然后点乘,得到 1.png

    math3d 库中提供了关于点乘的API

    1.m3dDotProduct3 函数获得2个向量之间的点乘结果;
    float m3dDotProduct3(const M3DVector3f u,const M3DVector3f v);

    2.m3dGetAngleBetweenVector3 即可获取2个向量之间夹⻆的弧度值;
    float m3dGetAngleBetweenVector3(const M3DVector3f u,const M3DVector3f v);

    math3d库,有2个数据类型,能够表示⼀个三维或者四维向量:

    M3DVector3f可以表示⼀个三维向量(x,y,z);
    M3DVector4f则可以表示⼀个四维向量(x,y,z,w);

    在典型情况下,w坐标设为1.0。x,y,z值通过除以w,来进⾏缩放。⽽除以1.0则本质上不改变x,y,z值。

    三维向量/四维向量的声明
    typedef float M3DVector3f[3];
    typedef float M3DVector4f[4];

    声明⼀个三维向量M3DVector3f:类型vVector:变量名
    M3DVector3f vVector;

    声明⼀个四维向量并初始化⼀个四维向量
    M3DVector4f vVertex = {0,0,1,1};

    矩阵:

    特点:
    1)主对角线上数据都是1,其余元素都是0,即为单元矩阵
    2)单位矩阵相乘满足交换法则,即:向量 X 单元矩阵 = 向量 X 1,不会发生任何变化
    3) 向量与单元矩阵相乘的前提是:向量的列数 == 单元矩阵的行数

    叉乘:A*B,A的列数==B的行数

    单元矩阵Matrix:

        //单元矩阵初始化⽅式①
              GLFloat m[] = {
                              1,0,0,0, //X Column
                              0,1,0,0, //Y Column
                              0,0,1,0, //Z Column
                               0,0,0,1 // Translation
                               }
    
     // 单元矩阵初始化⽅式 ②
             M3DMatrix44f m = {
                         1,0,0,0, //X Column
                         0,1,0,0, //Y Column
                         0,0,1,0, //Z Column
                         0,0,0,1 // Translation
                      }
    
    //单元矩阵初始化⽅式③
    void m3dLoadIdentity44f(M3DMatrix44f m);
    在线性代数数学的维度,为了便于书写. 所以坐标计算. 都是从左往右顺序,进⾏计算. 如下列公式: 
             变换后顶点向量= V_local * M_model * M_view * M_pro
              变换后顶点向量= 顶点 ✖ 模型矩阵 ✖ 观察矩阵 ✖ 投影矩阵;
    

    1.从栈顶获取栈顶矩阵 复制到mTemp

    1. 将栈顶矩阵mTemp 左乘mMatrix
    2. 将结果放回栈顶空间⾥


      1.png

    相关文章

      网友评论

          本文标题:向量 & 矩阵

          本文链接:https://www.haomeiwen.com/subject/uxzplktx.html