1
Python编程从入门到实践
1.14.1.2 10.1.2 画圆形或曲线的小海龟turtle
10.1.2 画圆形或曲线的小海龟turtle

1.绘制同切圆

【例10.7】下面这段代码使用turtle完成同切圆的绘制。

解析:同切圆的特点从图中就可以得出,即每一次圆都是从同一个地方出发,可以看作是从小乌龟的左侧或右侧找个圆心,以r为半径旋转360°,区别是每次旋转点的半径不同。

运行程序后,效果如图10-8所示,从小乌龟的左、右侧两个方向画同切圆。

图10-8 同切圆效果图

扫码查看彩图

程序代码中的相关知识:

turtle.circle(radius,extent=None,steps=None),以给定半径画圆。

参数如下:

radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆。

extent(弧度):表示度数,用于绘制圆弧。

steps(optional):step表示边数,可用于绘制半径为radius的圆的内切正多边形。

2.绘制彩色图形

【例10.8】下面这段代码使用turtle绘制了彩色图形。

解析:在循环过程中,colors不断地重复取值:“red”“yellow”“blue”“green”,在循环过程中,就会不断地重复画出“红色的圆”“黄色的圆”“蓝色的圆”“绿色的圆”。

运行程序后,效果如图10-9所示。

图10-9 彩色图形

扫码查看彩图

程序代码中的相关知识:

第五行代码t.pencolor(colors[x%4])中,x%4表示x除以4的余数。由于在循环中,x从1逐渐变大,取余数后其值就不断地重复取值1,2,3,0,而colors是一个存放有4个颜色值的列表。colors[0]的值是“red”,colors[1]的值是“yellow”,colors[2]的值是“blue”,colors[3]的值是“green”。

3.绘制蟒蛇

【例10.9】使用turtle绘制一条蟒蛇。

解析:Python是“蟒蛇”的意思,因此,绘制一条蟒蛇十分有趣。

运行上述代码,该程序输出的蟒蛇效果如图10-10所示。

程序代码中的相关知识:

①程序运行导入turtle库,遇到setup函数,turtle中的turtle.setup()函数用于启动一个图形窗口,它有四个参数:width,height,startx,starty,分别是启动窗口的宽度和高度,以及窗口启动时,窗口左上角在屏幕中的坐标位置。所使用的显示屏幕也是一个坐标系,该坐标系以左上角为原点,向左和向下分别是x轴和y轴。蟒蛇程序代码turtle.setup(650,350,300,300)启动一个650像素宽、350像素高的窗口,并以显示屏幕左上角为原点,向左300像素、向下300像素。

②turtle中的turtle.pensize()函数表示小乌龟运动轨迹的宽度。它包含一个输入参数,

图10-10 Python蟒蛇绘制的输出效果

扫码查看彩图

这里把它设为25像素。

③turtle中的turtle.pencolor()函数表示小乌龟运动轨迹的颜色。它包含一个输入参数,这里把它设为紫色purple。turtle采用RGB方式来定义颜色,如果希望获得绿色的小蛇,则输入turtle.pencolor("#3B9909")。

④turtle中的turtle.seth(angle)函数表示小乌龟启动时运动的方向。它包含一个输入参数,是角度值。其中,0表示向东,90°向北,180°向西,270°向南;负值表示相反方向。程序中,让小乌龟向-40°启动爬行,即向东南方向40°。

⑤turtle.circle()函数让小乌龟沿着一个圆形爬行。rad描述圆形轨迹半径的位置,这个半径在小乌龟运行的左侧rad远位置处,如果rad为负值,则半径在小乌龟运行的右侧;参数angle表示小乌龟沿着圆形爬行的弧度值。

⑥turtle.fd()函数也可以写成turtle.forward(),表示乌龟向前直线爬行移动,它有一个表示爬行距离的参数。

4.绘制树

【例10.10】递归绘制一棵树。

解析:使用递归函数绘制分形树,末梢树枝的颜色与前面不同。分形几何学的基本思想:客观事物具有自相似性的层次结构,局部和整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似性,称为自相似性。自相似性是指局部是整体成比例缩小的性质。

运行上述代码,该程序的输出效果如图10-11所示。树干初始值为110,每次绘制完树枝后,画笔右转25度;绘制下一段树枝时,长度减少15;重复6次操作,直到终止。终止条件:树干长度小于5,此时为顶端树枝。达到终止条件后,画笔左转50度,以当前长度减少15,绘制树枝,右转25度,回到原方向,退回上一个节点,直到操作完为止。

5.绘制函数曲线

【例10.11】使用turtle绘制函数y=9-x2曲线的一部分。

解析:先确定窗口的大小和x值的范围,然后根据函数计算对应的y值,使用线段依次连接多个点。若这些点之间的距离足够小,则可以形成光滑的曲线。

图10-11 Python绘制树的输出效果

扫码查看彩图

运行上述代码,该程序的输出效果如图10-12所示。

图10-12 函数曲线绘制结果

扫码查看彩图

程序代码中的相关知识:

turtle中默认的模式为standard,其坐标原点在画布(canvas)中心,单位为像素(pixel)。

第三行代码setworldcoordinates(-4,-1,4,10)表示屏幕左下角的(-4,-1)和屏幕右上角的(4,10)坐标。可以用setworldcoordinates自定义坐标系。