第2章 游戏中的数学和物理基础知识
2.1 笛卡儿坐标系
2.1.1 2D笛卡儿坐标系
2D笛卡儿坐标系很像是由矩形构成的一个虚拟世界。如果你曾经注视过房屋的天花板,用过街区地图,看过足球比赛,下过象棋,那么你已经在笛卡儿坐标系中了。如图2-1所示,假想一个名为笛卡儿的虚拟城市,该城的设计者们精心设计了街道的布局,中心街道经过城镇中心贯穿东西,其他东西走向的街道是根据它与中心街道的相对位置来命名的,如北3街和南1街。
图2-1 笛卡儿虚拟城市街道图
坐标系是一个精确定位点的框架。2D笛卡儿坐标系有以下两点定义:
① 每个2D笛卡儿坐标系都有一个特殊的点,称做原点(Origin),它是坐标系的中心。原点相当于笛卡儿城的中心。
② 每个2D笛卡儿坐标系都有两条过原点的直线向两边无限延伸,称做轴(Axis)。两个轴互相垂直,这相当于笛卡儿城的中心街道和分界街道。
如图2-2所示,为了在笛卡儿坐标系中定位点,人们引入了笛卡儿坐标的概念。在2D平面中,两个数(x, y)就可以定位一个点。和笛卡儿城街道名的意思类似,坐标的每个分量都表明了该点与原点之间的距离和方位。确切地说,每个分量都是到相应坐标轴的有符号距离。在2D笛卡儿坐标系中,X轴和Y轴的方向可以是任意的,因为这些不同X轴、Y轴方向所构成的坐标系可以通过旋转获得一致,也可以说这些坐标轴是等价的,因此,在2D笛卡儿坐标系中,没有限定X轴、Y轴的方向,但这个概念在3D的笛卡儿坐标系中就不成立。
图2-2 2D笛卡儿坐标
2.1.2 3D笛卡儿坐标系
通过2D笛卡儿坐标系,可以描述平面的空间,但现实世界中的3D空间则难以描述,因此需要从2D坐标系扩展到3D坐标系。
如图2-3所示,需要3个轴来表示三维坐标系,前两个轴称为X轴和Y轴,这和2D坐标系一样,第三个轴称为Z轴,一般情况下,3个轴互相垂直,也就是每个轴都垂直于其他两个轴。在3D平面中,三个数(x, y, z)就可以定位一个点。
图2-3 3D笛卡儿坐标
2.1.3 左右手坐标系
在现实世界中,一般来说,如图2-4所示,头顶为Y轴正轴方向,右边为X轴正轴方向,前方为Z轴正轴方向。
图2-4 实现世界中的3D坐标方向
但在游戏世界中,一般可以有两种不同的坐标系统来表示游戏世界中的坐标,即左手坐标系(如图2-5所示)和右手坐标系(如图2-6所示)。那如何判断一个坐标系属于左手坐标系还是右手坐标系呢?伸出左手,如图2-5所示,让拇指、食指和中指两两垂直,其中拇指代表Y轴,食指代表Z轴,中指代表X轴,这个坐标系统就是左手坐标系统,任何一个系统,只要能通过旋转变成这个系统,则该系统为左手坐标系统。
图2-5 左手坐标系
图2-6 右手坐标系
按同样的方法,伸出右手,如图2-6所示,这个坐标系统就是右手坐标系统,任何一个系统,只要能通过旋转变成这个系统,则该系统为右手坐标系统。
任何一个3D笛卡儿坐标系统,不是左手坐标系统就是右手坐标系统。