本节书摘来异步社区《游戏开发物理学(第2版)》一书中的第1章,第1.4节,作者: 【美】David M Bourg , Bryan Bywalec 译者: 崔力强 , 魏广程 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.4 向量
让我们稍稍停一下,回到高中的数学课去回顾一下向量的概念。本质上来讲,向量是一个既有大小又有方向的量。与之相对的标量,与向量不同,只有大小没有方向。在力学中,力、速度、加速度和动量是向量,所以它们的大小和方向我们都需要考虑。距离、密度、黏度等都是标量。
至于标记符号,我们会使用粗体字来表示向量,例如力F。当只使用向量的大小的时候,使用标准字体。例如力向量F的大小部分是F,该F在不同的坐标轴上有各自的分量,Fx、Fy和Fz。在本书的代码样例中,根据不同的上下文,使用*(星号)来表示向量的点乘,或者是标量的乘积,使用^(脱字符号)来表示向量的叉乘。
本书中大量地使用向量,所以读者最好能够回顾一下基本的向量运算,例如向量加法、点乘和叉乘。方便起见,附录A列出了一些基本的向量运算(这样你就不用翻出陈年的数学课本)。该附录提供了一个Vector类,其中包含了所有重要的数学功能。然后,我们会解释如何使用特定的向量运算(例如点乘和叉乘运算)来进行一些通用并很有用的计算。例如,在动力学中经常需要求平面或者接触面的垂直向量或者法向量(normal)。这个问题可以使用叉乘来解决。另外一个常见的计算是求一个点到空间中一个面的最短距离,这里可以使用点乘运算。在附录A中描述了如何通过向量计算得到上述两个问题的答案,在你开始钻研本书中的代码之前,我们建议你先复习一下附录A。