DirectX 12 3D 游戏开发实战
上QQ阅读APP看书,第一时间看更新

第一部分 必备的数学知识

“世上之事,无数学则不可解。”

罗杰•培根(《大著作》第四部分,第一章《第一个区别》,1267年)

电子游戏试图向玩家呈现出一个虚拟的世界。然而,计算机从本质上来讲却是一种处理数据的精密仪器。那么问题来了:如何用计算机来表达游戏中虚拟的场景呢?解决的办法就是完全运用数学的方式来描述场景空间以及其中物体的交互。因此,数学在电子游戏的开发中起着至关重要的基础性作用。

在讲述必备知识的第一部分中,我们将介绍穿插于全书的数学工具。重点是向量(vector,物理学和工程学中亦常译为“矢量”)、坐标系(coordinate system)、矩阵(matrix)及其变换(transformation),这些工具将广泛用于本书的所有例程之中。除了对这些数学知识进行讲解以外,我们还将纵览由DirectX数学库所提供的相关类与函数,并示范它们的用法。

请注意,这些主题仅论述了本书后续需要掌握的一些基础内容,而有关电子游戏所需的数学知识却不止于此。对于期望学习更多与游戏相关数学知识的读者,我们推荐[Verth04]和[Lengyel02]。

第1章“向量代数”向量(vector)也许是计算机游戏中最基础的数学对象,没有之一了。例如,我们可以用向量表示位置、位移、方向、速度与力。在这一章中,我们将学习向量及其运算法则。

第2章“矩阵代数”矩阵(matrix)为变换提供了一种高效且紧凑的简化表达方式。在这一章中,我们将熟悉矩阵及其运算定义。

第3章“变换”这一章将考察缩放、旋转和平移这三种基本的几何变换。我们利用这些变换来操纵空间中的3D物体。另外,我们还将讲解坐标变换,以此在不同的坐标系之间转换几何体的坐标表示。