编程基础之模块与类及函数3D直角坐标系

模块(Module)

有部可爱的动画片叫《万能阿曼》。讲的是热心助人的阿曼,是小镇上的修理高手,带着他爱讲话万能工具们,什么疑难杂症都难不倒他们。你看,下面的小阿曼提着它的工具箱又要出发了。阿曼的工具箱有好几个呢。针对什么电器坏了,他会带上不一样的工具箱。工具箱里面有很多的工具,有电动工具,有手动工具,有各式各样的镙丝刀,有各式各样的钳子,如尖嘴钳、老虎钳、斜口钳。还有各式各样的扳手,用来拧开或拧紧各种大镙丝。想像一下,如果没有这些工具,万能阿曼可就变成万痴阿曼了啊。

万能阿曼工具箱

有句话叫工欲善其事,先必利其器。万能阿曼之所以万能,和他能熟悉地使用各种工具是分不开的。在Python编程中,我们也有很多“工具箱”。如果要下载文件,有一个叫request的工具箱。如果要制作游戏有一个叫pygame的工具箱。如果要画图,有一个叫turtle的工具箱。这些工具箱在Python编程中叫模块。它们是由专业的开发人员开发的。要使用这些模块的话,使用命令“import 模块名”就行了,是不是很简单呢。

类和函数(Class and Function)

前面说了万能阿曼可是有很多不同的工具箱。我们就假设它有电动工具箱,手动工具箱,园艺专用工具箱,电脑维修工具箱吧。这里就是一个分类的概念。在Python编程的较高级阶段,我们要学习“类”这个概念,它和我们现实中分类的概念是一致的。在工具箱里可能会有各式各样的起子,它们也是属于一类。每把起子能拧起和它大小匹配的某种镙丝钉。这些起子是早就生产好了的。万能阿曼只要直接使用即可。在Python编程中,也有很多现成的工具,我们只要直接使用它们就行了。这些现成的工具有一个专业的名称为函数。函数的英文名叫function,直译为功能的意思。要编写程序,离不开熟练地使用各种函数。如果你学过scratch,一种儿童编程语言,那么肯定用scratch的各种积木拼搭过很多小作品。下面的两个命令配合重复执行,就能让角色转圈。

scratch旋转角色

这些命令实现了某种功能,它们其实就是函数,而重复执行10次则是一种控制结构。在课程《我的世界》我们使用的基本都是别人制作好的函数或类,这并没有关系。只要实现了目的就行了。有句话叫拿来主义,前人已经编写了很多优秀的函数和类等,除非特别的必要,我们不必去重复地编写它们。Python之所有高效,这和它有众多的模块及各式各样的函数是分不开的。不过,除了熟练掌握工具或许还不太够,如果我们要进行3D编程,那么掌握3D坐标系那可是必需的。

三维坐标系 (Three-dimensional coordinate system)

要学习三维坐标系,先看下二维坐标系。二维就是有两个维度或两个指标来表示位置的意思。这是怎么样的两个指标呢?下面有一只小黄猫,假设我们是在天上朝下看它,所以看到的是俯视图,还假设单位为米。我们来看下面的图示:

小黄猫扒在一个十字架的中央一动不动的。如果它往前,倒退,左右转弯。它都是在同一个平面上移动。橙色的线条我们称为x轴,蓝色的线条我们称之为z轴。这个时候它在中央,我们称为它在原点。

 

如果小黄猫往右转(90度),前进100,它就到了左边如图所示的位置。这时候我们称它的位置为(100,0),它在z轴右边。

 

如果小黄猫再往左转(90度),再前进100。这时我们称它的位置为(100,100)。它在z轴右边,并且在x轴上边。

 

如果小黄猫再往左拐,前进200,那么它将会到达如左图所示的位置。这个时候它的位置我们记为(-100,100),为什么小括号里的第一个数是负100呢。这是由于它在蓝色线条,也就是z轴的左边。

 

如果小黄猫再往左拐,前进200,那么它将会到达如左图所示的位置。这个时候它的位置我们记为(-100,-100),为什么小括号里的数都是负100呢。这是由于它不仅在蓝色线条左边,也在橙色线条的下边。

 

如果小黄猫再往左拐,前进100,那么它将会到达如左图所示的位置。这个时候它的位置我们记为(0,-100),为什么小括号里的第一数是0呢。这是由于它离蓝色线条的距离是0。如果它再前进50,你能说出它的位置吗?

 

上边我们所记的位置叫做坐标。不过这只是记录了小黄猫在平面上的位置,所以这个坐标是二维坐标。它有两个值,第一个值表示到蓝色线条的最短距离,如果在蓝色线条右边,这个数值就是正数。如果在蓝色线条左边,也就是我们说的z轴,这个值就是负数。

坐标中的第二个数值表示小猫到橙色线条,也就我们说的x轴的最短距离。如果小猫在橙色线条的上面,那第二个数值就是正数。如果它在橙色线条的下面,那么第二个数值就是负数。

当小猫在原点的时候,距离x轴和z轴的距离都是零,所以它的坐标是(0,0)。假设它在原点,方向为左,前进了100,这时候它的坐标就是(-100,0)。如果它再倒退200,这时候它的坐标就变成了(100,0)了。

综上所述,描述位置的两个指标是分别到z轴的最短距离和到x轴的最短距离。现在又来了一只小蓝猫。如下图所示,它距离小黄猫头顶上有100米的距离。 那这只小蓝猫的坐标怎么表示呢?

小黄猫距离地面的距离是0,而蓝猫距离地面的距离是100。这时候我们给坐标增加一个数据用来表示这个距离。那么,小黄猫的坐标就是(0,0,0),而小蓝猫的坐标就是(0,0,100)。最后面的这个100表示是高度,如果它在小黄猫的下面,那么这个值就是负数。我们把这个高度用y来表示,相应的上面的红色线条叫y轴。小括号里面有三个数据了,这就是三维坐标表示法。如果这个时候蓝猫往下降了50米,那么它的坐标是什么呢?如果蓝猫再往前移动100,这时候它的坐标又是多少?

上面的x轴和z轴表示了一个平面,我们把它叫xz平面。在《我的世界》游戏中,史蒂夫就是在这个平面上行走,当然史蒂夫的高度会变化。在游戏中是以z轴正方向为正朝南,x轴正方向为正朝东。当进入游戏后,可以按F3键时,能看到一些信息。如史蒂夫的坐标,它的方向等,如下图所示:

python我的世界编程