概述
2019独角兽企业重金招聘Python工程师标准>>>
python 中使用递归绘制koch曲线
koch曲线是由瑞典数学家Helge von Koch,在1904年发表的“从初等几何构造的一条没有切线的连续曲线”的论文中提出的。它的描述如下:
1、指定一条线段的长度(L);
2、将这条线段三等分,并以中间的线段为底边构造一个等边三角形,然后去掉底边;(此时曲线的长度为4/3L);
3、对2中生成的曲线的每一条边重复2的操作(每操作一次称为一次迭代)。
所以koch曲线可以在有限的空间里达到无线长,这是它的特点。由于它的外形像雪花,所以又称“雪花曲线”。
那么在计算机中用python语言如何绘制呢?先分析下算法:(n 迭代次数 ; L 直线长度)
1、如果n=0,直接画出L长的直线即可;
2、如果n=1(第一次迭代),画出长度为L/3的线段;画笔向左转60度再画长度为L/3长的线段;画笔向右转120度画长度为L/3长的线段;画笔再向左转60度画出长度为L/3的线段;(基础图形)
3、如果n>1,第n次迭代相当于:n-1次迭代;画笔左转60度;n-1次迭代;画笔右转120度;n-1次迭代;画笔左转60度;n-1次迭代。(共7步操作)
根据上面的算法,就可以设计python里的程序去实现,代码如下:
import turtle
tr = turtle.getturtle()
def koch(n,len):
if(n==0):
tr.forward(len)
elif(n==1):
tr.forward(len/3.0)
tr.left(60)
tr.forward(len/3.0)
tr.right(120)
tr.forward(len/3.0)
tr.left(60)
tr.forward(len/3.0)
else:
koch(n-1,len/3.0)
tr.left(60)
koch(n-1,len/3.0)
tr.right(120)
koch(n-1,len/3.0)
tr.left(60)
koch(n-1,len/3.0)
koch(4,300) #迭代次数,直线长度
转载于:https://my.oschina.net/u/1423193/blog/184644
最后
以上就是闪闪画笔为你收集整理的python中使用递归实现koch曲线绘制的全部内容,希望文章能够帮你解决python中使用递归实现koch曲线绘制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复