nf使用 Python 的 turtle 模块画图

时间:2023-02-03 10:02:51

Python 内置了一个名叫 turtle 的模块。我们可以通过这个模块,来画出各种各样的图片。


在这篇文章里面,我会介绍 5 种通过递归方式画出的图案,希望大家喜欢!

————————————————————————

第一个是

科赫曲线Courbe de Koch/Koch curve

首先看看效果图:

nf使用 Python 的 turtle 模块画图

(图样不按比例)

我们可以看到科赫曲线是慢慢细分,最终获得比较复杂的图案。

那么在 Python 里面我们应该怎么用 turtle 画出呢?

from turtle import *
def draw1(n,l):
if(n ==0):
forward(l)
else:
for angle in (60,-120,60,0):
draw1(n-1,l/3)
left(angle)
(上述代码在 Python 3.4.0 测试通过)


# @param n: 科赫曲线细分度

# @param l : 科赫曲线每段长度

# 参考 n / l  : draw1(3, 300)


其中,n 是科赫曲线的「细分度」。

当 n = 0 的时候,科赫曲线是一条直线,

当 n = 1 的时候,科赫曲线会在中间 1/3 的位置画出一个边长为 l/3 等边三角形,

……


由此可以推出,当 n→∞的时候,科赫曲线的边→∞.


————————————————————————

第二个是

科赫雪花flocon de Koch / Koch snowflake

继续我们先来看效果图: nf使用 Python 的 turtle 模块画图
以上就是科赫雪花的图样(图样不按比例)
可以看出,其实科赫雪花就是由三条科赫曲线合成的。 所以我们可以很简单地使用我们之前已经用过科赫曲线来制作科赫雪花。 代码如下:
def draw1(n,l):#本函数需要上文提到的draw0(n,l)
if(n ==0):
forward(l)
else:
for angle in (60,-120,60,0):
draw1(n-1,l/3)
left(angle)
(上述代码在 Python 3.4.0 测试通过)

# @param n: 科赫雪花细分度# @param l : 科赫雪花每段长度
在这里我们可以很简单地看出,其实科赫雪花就是科赫曲线以 60° 组合而成的图案。

很简单吧,下面就将科赫曲线和科赫雪花改一下,以产生新的图案。
TO BE CONTINUE...