3D游戏数学基础中的计算原理及几何意义(一、矩阵)

-前言-

在3D开发中,矩阵的运算是极为频繁的,几乎任何关于3D场景中的对象运算都会用到矩阵的知识。

-正文-

在我们日常游戏开发中使用到的矩阵多为方针(行数等于列数),通常为2x2、3x3、4x4的方阵。

下面列举一个一般的3x3方阵:3D游戏数学基础中的计算原理及几何意义(一、矩阵)

对角矩阵及单位矩阵

对角矩阵是矩阵中非对角线元素均为0则为对角矩阵,上面3x3方阵中当m12,m13,m23,m21,m31,m32为0是为对角矩阵。

单位矩阵则是一种特殊的对角矩阵,同样以上面3x3方阵为例,当满足对角矩阵的情况下,m11,m22,m33为1时则为3x3矩阵的单位矩阵。

矩阵的转置

矩阵转置是沿着对角线翻折之后的矩阵。比如一个行向量转置后为一个列向量。

                                                              行向量转置:3D游戏数学基础中的计算原理及几何意义(一、矩阵)

既然说到行向量与列向量,不同平台默认使用的向量方式不一样,DirectX中默认使用行向量,OpenGL中默认使用列向量。

1.对于任意矩阵M,转置后转置等于原矩阵

2.对于任意对角矩阵D,转置矩阵等于原矩阵(单位矩阵更是如此)

矩阵的乘法

矩阵中是没有除法的概念的,不过矩阵的乘法也是够打脑壳的。矩阵一般我们都是叫法都是行列,一个4x2的矩阵就是4行2列的矩阵,这个矩阵能与之相乘的矩阵必定满足行数为2,否则它们相乘没有意义。下面来看看一个4x2的矩阵乘以2x5的矩阵是如何相乘的(公式编辑器太麻烦了我就手写了):

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

矩阵乘法满足一下特性:

  • 任意矩阵M乘以方阵,不管从哪边乘,都将得到与原矩阵大小相同的矩阵
  • 矩阵乘法不满足交换律
  • 矩阵乘法满足结合律,即(AB)C = A(BC)
  • 矩阵乘积的转置等于先转置矩阵然后以相反顺序乘以矩阵,(AB)' = B'A'

矩阵的主要实际运用

在游戏开发中矩阵住还要用于对象的旋转、缩放、投影、镜像、仿射(平移)

除了仿射不是线性变换,其余变换都是线性变换。平移是不能使用3x3矩阵完成的,必须使用4x4齐次矩阵完成。

那我们首先来说说为什么3x3矩阵为什么不能平移,而必须使用4x4齐次矩阵才能完成3D对象的平移。

平移

一个3D对象的平移可以理解成在x,y,z分量上分别移动x‘,y’,z’的距离。根据上面所讲的矩阵乘法概念。

当一个3D坐标点Vector3(x,y,z)表示为矩阵为:3D游戏数学基础中的计算原理及几何意义(一、矩阵),能与之相乘的必然是一个三行的矩阵

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

在上面3x3矩阵中的方块中我们不管填什么值都无法满足右侧的结果,因此通过3x3矩阵是无法实现3D对象的平移的,因此4x4齐次矩阵能为我们解决这个问题。下面我通过手写构造了一个平移矩阵:

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

旋转

旋转轴可以是x轴,y轴,z轴,他们的基向量均不相同

当绕x轴旋转的基向量

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

当绕y轴旋转的基向量

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

当绕z轴旋转的基向量

3D游戏数学基础中的计算原理及几何意义(一、矩阵)

缩放

在3D中存在3个维度的缩放因子,分别为kx,ky,kz。在不同的方向应用不同的因子,被称为非均匀缩放。非均匀缩放时,物体角度将发生变换,视各方向缩放因子的不同,长度、面积、体积的变换因子也各不相同。

                                                            3D游戏数学基础中的计算原理及几何意义(一、矩阵)