“For the things of this world cannot be made known without a knowledge of mathematics.”
Roger Bacon, Opus Majus part 4 Distinctia Prima cap 1, 1267.
现在我们来到了PART I数学基础的学习。
数学的重要性无需多言。由于书中讲述的数学内容仅是为后续内容服务的,并不全面,所以从学习数学的角度讲,书中推荐了两本专讲数学的书籍:
Lengyel, Eric, Mathematics for 3D Game Programming and Computer Graphics. Charles River Media, Inc., 2002.
https://book.douban.com/subject/6675562/
Verth, James M. van, and Lars M. Bishop. Essential Mathematics for Games & Interactive Applications: A Programmer’s Guide. Morgan Kaufmann Publishers (www.mkp.com), 2004.
https://book.douban.com/subject/26635117/
Part I的第一章是向量代数。向量在计算机图形学、碰撞检测和物理模拟中起着至关重要的作用,所以这一章一定要熟练掌握啊。
有关向量基本内容如坐标系,加减,数乘,点乘,叉乘,长度,单位化,投影,正交化等不再多说,我们直接看DirectX数学库中的向量。
从Windows8开始,DirectX math就成为了Windows SDK的一部分。它使用SSE2 (Streaming SIMD Extensions 2)指令集。通过使用128位宽的SIMD(single instruction multiple data)寄存器,SIMD指令可以一条指令操作四个32位的浮点数或int数。于是我们可以通过一条SIMD指令操作4D向量加法,或是忽略多余位的3D,2D向量加法。
要使用DirectX数学库,需要包含DirectXMath.h(名称空间DirectX),一些附加的数据类型需要包含DirectXPackedVector.h(名称空间DirectX::PackedVector)。对于x86平台需要启用SSE2(Project Properties > Configuration Properties > C/C++ > Code Generation > Enable Enhanced Instruction Set),对于所有