由於分形樹具有對稱性,自相似性,所以我們可以用遞歸來完成繪製。只要確定開始樹枝長、每層樹枝的減短長度和樹枝分叉的角度,我們就可以把分形樹畫出來啦!!
代碼如下:
# -*- coding: utf-8 -*-
'''
繪製分形樹
'''
import turtle as tl
def draw_smalltree(tree_length,tree_angle):
'''
繪製分形樹函數
'''
if tree_length >= 3:
tl.forward(tree_length) #往前畫
tl.right(tree_angle) #往右轉
draw_smalltree(tree_length - 10,tree_angle)#畫下一枝,直到畫到樹枝長小於3
tl.left(2 * tree_angle) #轉向畫左
draw_smalltree(tree_length -10,tree_angle) #直到畫到樹枝長小於3
tl.rt(tree_angle) #轉到正向上的方向,然後回溯到上一層
if tree_length <= 30: #樹枝長小於30,可以當作樹葉了,樹葉部分爲綠色
tl.pencolor('green')
if tree_length > 30:
tl.pencolor('brown') #樹幹部分爲棕色
tl.backward(tree_length) #往回畫,回溯到上一層
def main():
tl.penup()
#tl.pencolor('green')
tl.left(90) #因爲樹是往上的,所以先把方向轉左
tl.backward(250) #把起點放到底部
tl.pendown()
tree_length = 100 #我設置的最長樹幹爲100
tree_angle = 20 #樹枝分叉角度,我設爲20
draw_smalltree(tree_length,tree_angle)
tl.exitonclick() #點擊才關閉畫畫窗口
if __name__ == '__main__':
main()
結果如下: