用turtle库画出漂亮的图形,那个谁谁谁,你妈妈叫你来画画了!
- 2020-03-19 15:10:00
- key10 原创
- 3703
大家好,我是奇奇老师,武汉大学软件工程硕士,有着十几年的软件开发工程经验。
今天我们说一说用turtle库画漂亮的图形,我们主要从以下几个方面做讲解。
1.turtle库介绍
turtle库:
· (1)诞生于1969年。
· (2)Python语言的 标准库之一,意味着不用单独下载安装。
· (3)入门级的图形绘制函数库,但常见功能都有。
2.turtle绘图原理
Turtle前进的轨迹绘制成了图形。我们要做的就是控制turtle的运行轨迹。
3.官方文档
https://docs.python.org/3/library/turtle.html
4.turtle绘图窗体坐标体系
(1)、方向
图中的框内箭头头像是可以更改的,使用shape()函数。
(2)、角度
标准模式就是数学上的坐标轴角度,绕x轴逆时针角度从0°到360°。
有两种方法来改变方向:
(a)turtle.setheading(angle) 别名turtle.seth(angle):只改变方向不行进。 如 turtle.seth(90):海龟的朝向为90度
注意:与当前海龟头的朝向没有关系,90度就一定向上
(b)turtle.left(angle)与turtle.right(angle):在海龟当前头的方向上再向左/右 转多少度
5、turtle常用方法详解
(a)、移动和绘制:
turtle.forward(distance)
turtle.fd(distance)向前移动,
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance),返回
turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None),移动到某坐标位置。
turtle.setx(x),y轴不变,移动x,
turtle.sety(y),x轴不变,移动y,
turtle.home()回到原点0,0,方向也是0.
turtle.circle(radius,extent = None,steps = None )画圆。
radius半径,extent 角度,steps用于绘正多边形 ,如果半径为正,则沿逆时针方向绘制圆弧,否则沿顺时针方向绘制圆弧。
turtle.dot(size = None,* color );使用颜色color 绘制size 直径大小的圆点。
turtle.stamp()将它形状的副本印在当前位置的画布上;
turtle.clearstamp(stampid )删除stamp印的形状的副本.
turtle.clearstamps(n )删除n个stamp印的形状的副本。n不填删除所有。
turtle.undo()撤消操作
turtle.speed(speed=None);速度
“最快”:0
“快”:10
“正常”:6
“慢”:3
“最慢”:1
(b)转向:
turtle.right(angle)
turtle.rt(angle),以angle角度向右转
turtle.left(angle)
turtle.lt(angle) 相对于right,以angle角度向左转。
turtle.setheading(to_angle _)
turtle.seth(to_angle ),将它方向设置为to_angle,正数逆时针方向角度转,否则沿顺时针方向角度
standard模式:(逆时针)
0 - 东 (右)
90-北 (上)
180-西 (左)
270 - 南 (下)
logo模式:(顺时针)
90 - 东 (右)
0-北 (上)
270-西 (左)
180 - 南 (下)
(c)、设置:
画笔自身的设置:
turtle.pensize() 设置画笔的宽度
turtle.pencolor() 设置画笔的颜色,参数可以是字符串,如“red”,“green”
turtle.bgcolor('white') 设置屏幕的背景颜色,参数可以是字符串,如“red”,“green”
turtle.speed() 设置画笔移动的速度,参数是速度,数值越大速度越快
全局的控制:
turtle.clear() 清除屏幕中的内容,但是画笔位置不发生改变
turtle.reset() 清除屏幕中的内容,并且画笔回到初始位置
更多的函数大家可以在帮助里或网上找到,这里不做过多介绍。
6、实践例子
import turtle as mypencil
mypencil.Pen()
mypencil.speed(100)
mypencil.pencolor('red')
mypencil.bgcolor('black')
iWidth = 8
arrColors = ['red','purple','white','orange','yellow','blue','green','indigo']
for x in range(1000):
mypencil.pensize(x/13)
mypencil.pencolor(arrColors[x%8])
mypencil.forward(x*0.00703125)
mypencil.right(2)
运行结果如下:
大家可以把上面的参数修改下看看效果,也可以画出别的图形。
大家有什么建议和想法,欢迎与我交流。
联系人: | 周老师 |
---|---|
QQ: | 3435593559 |
微信: | thisfocus |
微博: | key10key10 |