今天用了python内置的turtle绘图库,感觉很有意思。然后尝试用turtle+递归画了一个分型树。代码如下,
import turtle
toplevel = 6 #一共递归6层
angle = 30
rangle = 15
def drawTree(length, level):
turtle.left(angle) #绘制左枝
turtle.forward(length)
if level == toplevel: #叶子
turtle.circle(2,360)
if level < toplevel: #在左枝退回去之前递归
drawTree(length-10, level+1)
turtle.back(length)
turtle.right(angle+rangle) #绘制右枝
turtle.forward(length)
if level == toplevel: #叶子
turtle.circle(2,360)
if level < toplevel: #在右枝退回去之前递归
drawTree(length-10, level+1)
turtle.back(length)
turtle.left(rangle)
turtle.left(90)
turtle.penup()
turtle.back(300)
turtle.pendown()
turtle.forward(100)
turtle.speed('fastest')
drawTree(80,1)
turtle.done()
图形是这样,
这个稍微美化了一些,来看个最原始的版本:
import turtle
toplevel = 6 #一共递归6层
angle = 30
def drawTree(length, level):
turtle.left(angle) #绘制左枝
turtle.forward(length)
if level < toplevel: #在左枝退回去之前递归
drawTree(length-10, level+1)
turtle.back(length)
turtle.right(angle*2) #绘制右枝
turtle.forward(length)
if level < toplevel: #在右枝退回去之前递归
drawTree(length-10, level+1)
turtle.back(length)
turtle.left(angle)
turtle.tracer(0) #不刷新
turtle.left(90)
drawTree(80,1)
turtle.update() #刷新,和上面的tracer(0)配合,直接出图形,忽略过程
turtle.done()
其中,这里去掉了树干,去掉了树叶,去掉了让树向左歪。图形如下
最后,我们可以继续美化这颗分型树,下面说几点想到的:
暂时想到这么多,挺晚了,该睡了,下次有机会再实现。