现在的位置: 首页 > 综合 > 正文

DirectX 11游戏编程学习笔记之3: 第2章Matrix Algebra(矩阵代数)

2018年04月09日 ⁄ 综合 ⁄ 共 2326字 ⁄ 字号 评论关闭

        本文由哈利_蜘蛛侠原创,转载请注明出处!有问题欢迎联系2024958085@qq.com

 

        注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候,会使用章节号而非页码。同样的情况适合于“龙书”第二版。

 

        上一期的地址:

DX 11游戏编程系列第2期

 

重点回顾:

===============================================================================

        这一章讲的是矩阵代数,其内容与“龙书”第二版第二章基本平行,但是增加了一些理论知识,而且当然也使用的是XNA Math库而非D3DX了。

        为了方便,把这一章的学习目标列在这里:

1、 To obtain an understanding of matrices and the operations defined on them.(理解矩阵及其运算。)

2、 To discover how a vector-matrix multiplication can be viewed as a linear combination.(发现为何向量与矩阵的乘积可以视为线性组合。)

3、 To learn what the identity matrix is, and what the transpose, determinant, and inverse of a matrix are.(学习什么是单位矩阵,什么是矩阵的转置、行列式和逆。)

4、 To become familiar with the subset of classes and functions provided by the XNA library used for matrix mathematics.(熟悉XNA
库所提供的关于矩阵数学的那部分类和函数。)

 

        这一章的内容大部分很简单,所以这一期是相对轻松的。(那么久好好珍惜吧!)值得注意的有一下一些内容:

 

2.5 The Determinant of a Matrix (矩阵的行列式)

        这一节讲的是求一个n阶方阵的行列式的方法。如果没学过线性代数的话,那么看起来可能觉得比较难;如果学过的话,就可以一扫而过了。推荐学过线性代数后再来看此部分内容。不过其实这也不打紧。这一节和后面的计算矩阵的逆的部分都是仅供参考的,在实际的代码编写中根本不需要了解的。

 

2.6 The Adjoint of a Matrix(矩阵的伴随矩阵)

        这一节讲的是伴随矩阵的定义,是为下一节的求矩阵的逆做准备的。如前所述,学过线性代数的同学可以略过,没学过的也不用担心。

 

2.7 The Inverse of a Matrix(矩阵的逆)

        这一节讲的是矩阵求逆的方法,给出了一个求逆的例子,并给出了矩阵的逆的一个重要的性质。如前所述,学过线性代数的同学可以略过,没学过的也不用担心。

 

2.8 XNA Matrices(XNA的矩阵)

        这一节讲述的是XNA Math 库中跟矩阵有关的部分。这一节也没什么好讲的,如果习惯了第1章的话,这个很短的小节也是很快就可以看完的。值得注意的是这一节的第一句话:我们使用1x4维的行向量和4x4维的矩阵来进行点和向量的变换。其理由将在下一章中进行讲述。

 

===============================================================================

 

勘误:

===============================================================================

1、  在第2.3节The Transpose of a Matrix 末尾,列举矩阵的转置的性质的时候,最后一条提到了矩阵的逆,而这个要到很后面才讲到。这里应该提一下的,免得读者困惑。

2、  在第2.4节The Identity Matrix 末尾,例2.7那里,题目中的I(i的大写字母)写成了l(小写的L)了。

 

===============================================================================

 

 

习题解答:

===============================================================================

        这一章的习题和上一章一样,大部分是数学题,少量的是编程题。

 

1-17题:

        这些题大部分是计算题,有几个是证明题。这些题目对于学过线性代数的人来说都是小菜一碟,有些题甚至可以口算出来。没有学过线性代数的同学通过学习本章应该也能够比较轻易地做出来(如果发现做出来有困难,推荐仔细做一遍;或者有时间的话,学习一下线性代数的相关知识)。

 

18题:

        这道题让我们自己编写一个函数来实现一个任意维的矩阵的转置。这个题目很基本,相信学过C++(或者C)的同学都做过类似的习题。这道题实在是太简单了,从略。

 

19题:

        这道题让我们用本章学习的知识,通过使用C++的二维数组,自己编写函数来求一个4x4维矩阵的行列式和逆矩阵。如果是任意阶的方针的话,那么使用书上给出的递推式定义效率就有点低了;但是由于限制为4x4维,所以根本就不需要考虑效率问题,因为不管怎么做效率都差不多。这样的题相信大家学习C++的时候也做过吧!所以就从略了。

===============================================================================

 

        好了,这一章的内容真心有点太少了。不管怎么说,下期再见吧!

抱歉!评论已关闭.