1.1.3 使用海龟绘图法绘图
为绘制科赫雪花,本章将使用Python模块turtle,这是一款简单的绘图程序,以海龟在沙滩上拖着尾巴前行为模型,绘制出各种图案。模块 turtle 包含用于设置画笔(相当于海龟的尾巴)位置和颜色的方法,还有很多有助于绘图的函数。
只需使用几个绘图函数就可绘制出科赫雪花。实际上,从turtle的角度看,绘制科赫雪花几乎与绘制三角形一样简单。为证明这一点,并初步讲解turtle是如何工作的,下面的程序使用turtle绘制了一个三角形。请输入这些代码,将其保存为test_turtle.py文件,再在Python中运行它。
❶ import turtle def draw_triangle(x1, y1, x2, y2, x3, y3, t): #尝试绘制一个三角形 ❷ t.up() ❸ t.setpos(x1, y1) ❹ t.down() t.setpos(x2, y2) t.setpos(x3, y3) t.setpos(x1, y1) t.up() def main(): print('testing turtle graphics...') ❺ t = turtle.Turtle() ❻ t.hideturtle() ❼ draw_triangle(-100, 0, 0, -173.2, 100, 0, t) ❽ turtle.mainloop() # 调用main()函数 if __name__ == '__main__': main()
首先,导入了模块turtle❶。接下来,定义了方法draw_triangle(),其参数为 3 对坐标(三角形的3个顶点),以及turtle对象t。在这个方法中,先调用了up()❷,让Python抬起画笔,换而言之,就是让画笔离开虚拟纸张,以免在移动海龟时进行绘画。开始绘画前,需要指定海龟的位置。调用函数setpos()❸将海龟的位置设置为第1对坐标对应的点。调用函数down()❹将画笔放下,因此每次调用setpos()时,都相当于将海龟移到了下一组坐标处,进而绘制出一条线段。最终的结果为一个三角形。
接下来,声明了函数main(),实际的绘画工作是由它来完成的。在这个函数中,创建了用于绘画的turtle对象❺,并将其隐藏起来❻。如果没有隐藏turtle对象,将在绘制的线段开头看到一个海龟的图案。接下来,为绘制三角形,调用了draw_triangle(),并将所需的坐标作为参数传递给它❼。调用函数mainloop()❽确保绘制三角形后不会关闭tkinter窗口(tkinter是Python默认使用的GUI库)。
图1.5显示了这个简单程序的输出。
图1.5 使用海龟绘图法绘制三角形
有了完成本章项目所需的一切后,下面来绘制科赫雪花。