科赫曲线,也叫做雪花曲线。是一种分形几何,分形几何是一种迭代的几何图形,广泛存在于自然界中。
python学习笔记 第五章(科赫雪花与科赫曲线)
科赫曲线是一种迭代的图形,所以我们是可以利用python中的迭代法来绘制。
我们先考虑如何实现迭代。
首先我们确定递归的基例,考虑最基本的情况,就是直接绘制一条曲线,没有任何的改变,即0阶的科赫曲线。

if n==0:
turtle.fd(size)

这里的size指的是长度。
然后我们来确定递归的链条。

else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)

我们观察每一条线,对每一个三分之一处进行一次转向,角度依次为0、60、-120、60,单位为度。
然后我们加入定义主函数,用来绘制一个科赫曲线。

#科赫曲线
import turtle
def kehe(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)
def main():
turtle.setup(800,400)
turtle.penup()
turtle.goto(-300,-50)
turtle.pendown()
turtle.pensize(2)
kehe(600,3)
#三阶科赫曲线
turtle.hideturtle()
main()

turtle.hideturtle()用来最后将画笔隐藏。
最终画出的效果如下:
python学习笔记 第五章(科赫雪花与科赫曲线)
而我们希望得到的科赫雪花这是三个上面这样的图形组成而成,这时我们就需要在绘制上面图像的结束时转变角度,然后继续绘制。
代码如下:

#科赫雪花
import turtle
def kehe(size,n):
if n==0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
kehe(size/3,n-1)
def main():
turtle.setup(600,600)
turtle.penup()
turtle.goto(-200,100)
turtle.pendown()
turtle.pensize(2)
level=3
#三阶科赫雪花
kehe(400,level)
turtle.right(120)
kehe(400,level)
turtle.right(120)
kehe(400,level)
turtle.hideturtle()
main()

可以最终得出如下图形:
python学习笔记 第五章(科赫雪花与科赫曲线)
这里我们可以通过改变参数来得到我们所需要的高阶图形,也可以通过加快画笔的速度来缩减画图的所用时间。下面是我改变阶数画出的四阶与五阶的图形。

python学习笔记 第五章(科赫雪花与科赫曲线)
python学习笔记 第五章(科赫雪花与科赫曲线)对于科赫雪花,我们还可以进行拓展,比如我把三边改为四边,将绘制三角形改为四边形进行迭代,有很多种的改变方式,但思路方法一致,下面是我自己随意改变形状所得的图形形状。
整体为三角形,突起为四边形的二阶图形:
python学习笔记 第五章(科赫雪花与科赫曲线)
整体为三角形,突起为四边形的三阶图形:

python学习笔记 第五章(科赫雪花与科赫曲线)
整体为三角形,突起为四边形的三阶图形:
python学习笔记 第五章(科赫雪花与科赫曲线)

相关文章: