矩阵

矩阵

  • 矩阵可以看做一个数字装填的2维数组(m行*n列),m,n可以使任意>=1的数字,为方便表示,统一使用M(m,n)表示一个m行n列的久着呢

  • 两个矩阵相乘的规则 \(Ma(o,p) \times Mb(p,q) = Mc(o,q)\)

    • 第一个矩阵的列 = 第二个矩阵的行
    • 相乘结果得到一个矩阵
      • 矩阵行数 = 第一个矩阵的行数,矩阵列数 = 第二个矩阵的列数
      • Mresult的元素 Item(i,j) = Ma的第i行的所有元素依次 乘以 Mb的低j列的所有元素 并相加
  • 满足的数学定律

    • 不满足
      • \(Ma \times Mb \neq Mb \times Ma\) (不满足交换律,意义不同) \(Ma \times Mb = - Mb \times Ma\)
    • 满足
      • \(Ma \times Mb \times Mc \times Md = Ma \times (Mb \times Mc) \times Md\) (满足结合律,可以随意结合)
      • 加法的分配律 \(Ma \times(Mb+Mc)=Ma \times Mb + Ma \times Mc\)
  • 几种特殊的矩阵

    • 单位矩阵 一般用I(n)表示 任何矩阵与单位矩阵相乘不会有任何变化,还是他自身 $$\begin 1 & 0 & 0 & 0 \ 0 & 1 & 0 & 0\ 0 & 0 & 1 & 0\ 0 & 0 & 0 & 1 \end$$
    • 方块矩阵 M(m,m) 行数 = 列数
    • 转置矩阵 M(m,n)的转置矩阵 = M(n,m) 可以理解为被旋转处理了 \[\begin{bmatrix} 1&2&3&4\\ 5&6&7&8\\ \end{bmatrix} \] 转置后 \[\begin{bmatrix} 1&5\\ 2&6\\ 3&7\\ 4&8\\ \end{bmatrix} \]
      • 转置矩阵的特性
        • \((Ma^{转置})^{转置} = Ma\)
        • \((Ma \times Mb)^{转置} = Mb^{转置} \times Ma^{转置}\)
    • 逆矩阵 顾名思义相当于置反 可以用于将变换还原(将转换为世界坐标系下的点的位置 乘以 MLocalToWorld的逆矩阵 = 模型本地坐标系的位置)
      • 特性
        • \((M^{-1})^{-1} = M\)
        • \((单位矩阵)^{-1} = 单位矩阵自身\)
        • \((M^{转置})^{-1} = (M^{-1})^{转置}\)
        • \((Ma \times Mb \times Mc)^{-1} = Mc^{-1} \times Mb^{-1} \times Ma^{-1} M^{-1}\)
    • 正交矩阵 \(M \times M^{转置} = 单位矩阵\)
      • 特性
        • \((M_{正交})^{转置} = (M_{正交})^{-1}\) 这一特性将支持使用转置矩阵来代替逆矩阵,因为逆矩阵的求得需要复杂的运算,前提是这是一个正交矩阵
  • 空间变换的矩阵应用

    • 平移 将平移的偏移量写入4x4矩阵的最后一列的钱3行 与 原位置矩阵(扩充至1x4的矩阵,其中最后一位补1)相乘
    \[\begin{bmatrix} 1&0&0&tx\\ 0&1&0&ty\\ 0&0&1&tz\\ 0&0&1&1\\ \end{bmatrix} \times \begin{bmatrix} x\\ y\\ z\\ 1\\ \end{bmatrix} = \begin{bmatrix} tx+x\\ ty+y\\ tz+z\\ 1\\ \end{bmatrix} \]
    • 缩放 缩放参数写入在4x4矩阵的负对角线的前三位(结合矩阵相乘的计算规则就不难理解)
    \[\begin{bmatrix} Sx&0&0&tx\\ 0&Sy&0&ty\\ 0&0&Sz&tz\\ 0&0&1&1\\ \end{bmatrix} \times \begin{bmatrix} x\\ y\\ z\\ 1\\ \end{bmatrix} = \begin{bmatrix} Sx*x\\ Sy*y\\ Sz*z\\ 1\\ \end{bmatrix} \]
    • 旋转
      • 绕X,Y,Z轴旋转$\theta$度的矩阵如下,规则与向量叉乘类似,其中Y轴比较特殊 \[X = \begin{bmatrix} 1&0&0&0\\ 0&cos\theta&-sin\theta&0\\ 0&sin\theta&cos\theta&0\\ 0&0&0&1\\ \end{bmatrix} Y = \begin{bmatrix} cos\theta&sin\theta&0&0\\ 0&1&0&0\\ -sin\theta&cos\theta&1&0\\ 0&0&0&0\\ \end{bmatrix} Z = \begin{bmatrix} cos\theta&-sin\theta&0&0\\ sin\theta&cos\theta&0&0\\ 0&0&1&0\\ 0&0&0&0\\ \end{bmatrix} \]
  • 空间变换的准则

    graph LR 缩放 --> 旋转 旋转--> 移动

上一篇:第三章 学习Shader所需的数学基础(4)


下一篇:53. 最大子序和