3D数学基础及图形开发(三)矩阵及矩阵的构建

首先,作为一个游戏开发者为什么需要学习矩阵?因为在我们的游戏中矩阵可以实现对原来物体的缩放,平移,旋转的线性变换(计算机最快以及最高效的旋转为欧拉角),矩阵就是我们实现旋转的一种基本方式,在我们3D游戏开发中用得最多的为3X3的矩阵,可以完成对XYZ轴的旋转,而4X4的齐次矩阵则是在旋转的基础上增加了平移变换。
  现在开始来介绍矩阵,我们之前知道向量相当于标量的数组,那矩阵就是向量的数组。

矩阵的类型:

方阵:  行数与列数相等的矩阵叫做方阵。

3D数学基础及图形开发(三)矩阵及矩阵的构建_第1张图片
Paste_Image.png

对角矩阵:  除对角线上以外的元素都为0的矩阵叫做方阵。

3D数学基础及图形开发(三)矩阵及矩阵的构建_第2张图片
Paste_Image.png

单位矩阵:  除对角线上以外的元素都为0,并且对角线上的元素都为1的矩阵叫做方阵。

3D数学基础及图形开发(三)矩阵及矩阵的构建_第3张图片
Paste_Image.png

向量以矩阵来表示:向量同时也可以作为矩阵使用,列向量相当于3x1的矩阵

3D数学基础及图形开发(三)矩阵及矩阵的构建_第4张图片
Paste_Image.png

矩阵的转置:矩阵的行和列的交换成为矩阵的转换。对角矩阵和单位矩阵的转置等于它本身(D)(矩阵的转置非常重要,因为之前提到4x4的齐次矩阵可以同时做到平移和旋转的变换。而齐次矩阵的性质就是它的逆等于它的转置,我们可以通过转置轻松的求得逆)

3D数学基础及图形开发(三)矩阵及矩阵的构建_第5张图片
Paste_Image.png

向量可以作为矩阵表示同样可以实现转置。

3D数学基础及图形开发(三)矩阵及矩阵的构建_第6张图片
Paste_Image.png

矩阵的相关公式。

标量与矩阵的乘法:标量与矩阵的乘法等于这个与矩阵中每个元素相乘

3D数学基础及图形开发(三)矩阵及矩阵的构建_第7张图片
Paste_Image.png

矩阵与矩阵相乘:矩阵与矩阵相乘需要遵循前一个矩阵的行数需要等于后一个矩阵的列数!(矩阵的乘法是不遵循乘法交换律的除非其中一个矩阵为单位矩阵)
    第一个矩阵决定了最后得到矩阵的行数,第二个矩阵决定了列数
                AB!=BA

Paste_Image.png
3D数学基础及图形开发(三)矩阵及矩阵的构建_第8张图片
Paste_Image.png
3D数学基础及图形开发(三)矩阵及矩阵的构建_第9张图片
Paste_Image.png
3D数学基础及图形开发(三)矩阵及矩阵的构建_第10张图片
Paste_Image.png

矩阵的乘法公式:

Paste_Image.png

单位矩阵的乘法:

3D数学基础及图形开发(三)矩阵及矩阵的构建_第11张图片
Paste_Image.png

矩阵的乘法结合律等:
3D数学基础及图形开发(三)矩阵及矩阵的构建_第12张图片
Paste_Image.png

向量与矩阵的乘法:(行向量与列向量分别与矩阵相乘结果是不同的)

  • 行向量:


    3D数学基础及图形开发(三)矩阵及矩阵的构建_第13张图片
    Paste_Image.png
  • 列向量:


    3D数学基础及图形开发(三)矩阵及矩阵的构建_第14张图片
    Paste_Image.png

从以上可以看出行向量与矩阵相乘需要左乘,列向量则需要右乘。

3D数学基础及图形开发(三)矩阵及矩阵的构建_第15张图片
Paste_Image.png

矩阵的几合解释:(0,1)和(1,0)两个向量通过矩阵乘法实现了旋转和大小的变换

3D数学基础及图形开发(三)矩阵及矩阵的构建_第16张图片
Paste_Image.png

实际上把这个平面上的点都进行了变换
3D数学基础及图形开发(三)矩阵及矩阵的构建_第17张图片
Paste_Image.png

可以发现需要对2D的物体实现缩放以及旋转变换我们使用2x2的矩阵就可以实现

那3D的呢? 我们就需要使用3x3的矩阵:

3D数学基础及图形开发(三)矩阵及矩阵的构建_第18张图片
Paste_Image.png
3D数学基础及图形开发(三)矩阵及矩阵的构建_第19张图片
Paste_Image.png

矩阵的编程实现:(相关运算符需要重载实现)

3D数学基础及图形开发(三)矩阵及矩阵的构建_第20张图片
Paste_Image.png
  • 运算符的重载,矩阵乘法


    3D数学基础及图形开发(三)矩阵及矩阵的构建_第21张图片
    Paste_Image.png
  • 矩阵的乘法,在源文件中实现。
3D数学基础及图形开发(三)矩阵及矩阵的构建_第22张图片
Paste_Image.png

你可能感兴趣的:(3D数学基础及图形开发(三)矩阵及矩阵的构建)