游戏数学(6)

8.2  向量

向量是一个常用的游戏编程工具。了解向量数学最简单的方式是在游戏中使用向量,很快就可以熟悉向量的各种用法。前面的章节中已经创建了一个简单的向量类,但是到现在为止还没有定义它的任何属性。

8.2.1  向量的定义

在游戏编程中,向量用于操作和描述3D游戏世界。向量的数学定义是既有大小又有方向的量。大小就是向量的长度。

游戏编程中最常用的向量是2D、3D和4D向量。在使用投影矩阵将顶点从3D转换到2D空间时,会用到4D向量。纸面上看起来,向量和位置很类似。位置[0,3,0]和向量[0,3,0]有相同的内部值,但是它们代表不同的概念。位置使用坐标系统定义世界中的一个绝对位置。向量描述一个方向(在这里为向上)和大小或者说长度(在这里为3)。图8-3比较了两者的不同。例如,“离地面3英里”不是一个位置,而是使用位置和长度描述了一个位置,换句话说,它是一个向量。

在游戏编程中,向量用于回答如下问题:

● 敌人的飞船位于[0,0,90],玩家的飞船位于[0,80,-50]。敌人应该向哪个位置发射导弹?在每一帧中,如何更新导弹的位置,使其朝向玩家不断移动?

● 玩家与导弹的位置小于1m吗?

● 玩家在墙的哪一边?

● 玩家在看NPC吗?

● 给定一个表示枪的后部的四方形,子弹将向哪个方向飞出?

● 光应该如何从这个表面反射出去?

● 把汽车向前移动3m。

● 玩家击中了一个敌人,敌人应该向哪个方向运动?

● 如何将子弹的动力增加100?

● 哪个玩家最接近外星人的飞船?

 

读书导航