3.2 笛卡儿的发明—平面直角坐标系
如果我们在图3-1 的基础上再增加一条竖直方向的数轴,并让这两条数轴垂直相交,且这两条数轴的原点互相重合,它们的原点就是它们的交点,我们就得到了如图3-2 所示的图形。
图3-2
图3-2 所示的图形就叫平面直角坐标系,它的发明者是法国数学家笛卡儿,笛卡儿通过这个伟大的发明把代数和几何统一在了一起,为数学的发展提供了创新思路,这是人类数学发展史上的一次飞跃,它极大地促进了现代数学的发展。而我们本章要学习的绘图模块turtle,其背后的数学原理就建立在这个平面直角坐标系中。
在平面直角坐标系中,每个点都有两个坐标,水平方向的坐标用x 来表示,竖直方向的坐标用y 来表示,这样任何一个点P 的坐标都可以写成:(x, y),按照数学上的规定,我们把这个点的两个坐标写在一对圆括号里。
在图3-2 中,A、B、C、D、E 这5 个点的坐标分别如下:
· A 点:(1,1)
· B 点:(3,1)
· C 点:(-3,-2)
· D 点:(-2,2)
· E 点:(2,-4)
在平面直角坐标系中,坐标原点的坐标是:(0,0),即它的横坐标和纵坐标都是零。无论是横坐标x 还是纵坐标y,它们都可以是小数,比如(5.5, -9.5),但在使用turtle模块画图时,一般情况下用到的点坐标都是整数。
本章将使用Python 自带的IDLE 来画图,要使用turtle 模块画图,首先需要导入turtle 模块。
启动IDLE(在Windows 系统中找到“开始”菜单中的Python IDLE 选项,单击打开它;在苹果系统中打开终端,在提示符“$”后面输入idel 或idle3,再按回车键),这时可以看到IDLE 已经启动,启动后有两个窗口,如图3-3 所示。(因笔者使用的是苹果系统,因此本书中的截图都是在苹果系统下的截图,Windows 下的IDLE 窗口与此类似,差别不大。)
图3-3
我们可以看到,IDLE 启动后会有两个窗口,图3-3 中大的窗口中有Python 的提示符“>>>”,其中还显示了笔者使用的Python 的版本号是3.7.3,小的那个窗口不要关闭它,它表示正在运行IDLE,我们可以把它最小化,这样不妨碍我们进行其他操作,也可以使用鼠标拖曳和改变大的窗口在屏幕上的位置和大小。
如果忘记了IDLE 的基本操作,可以复习一下第1 章的内容。下面来画一条水平的直线。
在Python 的提示符“>>>”后面输入:import turtle,再按回车键,表示引入了turtle 绘图模块,如果IDLE 没有报错,就是正常的,如图3-4 所示。如果报错,说明你的Python 中没有turtle 模块,这种情况很少,因为它是Python 自带的一个模块,当Python 安装好后一般就有turtle 了,如果报错,则可能需要重新在Python 的官网下载并安装最新版本的Python。
再输入:turtle.showturtle(),就会出现一个新窗口,如图3-5 所示。这个窗口就是turtle 的画布窗口,我们就是在一个画布窗口中用代码编程来画画的,这个窗口中有一个小的黑色箭头,它表示画笔,它默认的方向是指向右边的,和我们平时使用铅笔在纸上画图不同,但使用代码编程画图时,我们需要随时关注这个画笔箭头所指向的方向。
图3-4
图3-5
不要关闭这个画布窗口,用鼠标单击有“>>>”符号的那个窗口,然后在符号“>>>”的后面输入:turtle.forward(150),按回车键就会看到画布窗口中画出了一条水平方向长度为150 像素的直线,如图3-6 所示。
图3-6
下面来看一下这3 条Python 命令的含义:
· import turtle:引入画图模块turtle,这个不能少,否则无法画图。
· turtle.showturtle():显示出turtle 的画图箭头,默认位于画布的中心点。
· turtle.forward(150):让当前的画图箭头前进150 像素的长度。
海龟模块turtle 中有很多画图的命令,这些命令的书写格式如下:
turtle 和命令之间通过一个英文句点来连接,命令的后面都要跟上一对英文的圆括号,圆括号里是画图的参数,有的画图命令不需要任何参数,但圆括号不能省略,有的画图命令需要一个或多个参数,上面的第二条命令就是showturtle,表示显示出画图箭头,第三条命令是forward,圆括号里的参数是150,表示让画图箭头前进的长度为150 像素。像素是计算机显示器中一个非常小的点,计算机显示器所显示的各种绚丽多彩的图片其实都是由成千上万个这样的像素点组成的,作为编程初学者,我们理解到这一步就可以了。
通过上面这个非常简单的例子,我们可以归纳使用turtle 模块画图的步骤。
(1) 打开IDLE,引入turtle 模块。
(2) 对于要画出的图形,无论是简单还是复杂,都需要事先规划好。
(3) 使用turtle 模块提供的各种绘图命令设置必要的绘图参数,让它们执行即可。
显然,这种一边想一边画的方法非常低效,如果画错了,纠正起来也比较麻烦,更好的办法是先在纸上设计和构思想画的图形,必要时可以打画图草稿,再使用turtle中的绘图命令,把这些命令写入一个绘图的Python 文件中,保存后再执行,就是第1 章所说的编写好程序文件再执行的方式。