用python的turtle畫分形樹

由於分形樹具有對稱性,自相似性,所以我們可以用遞歸來完成繪製。只要確定開始樹枝長、每層樹枝的減短長度和樹枝分叉的角度,我們就可以把分形樹畫出來啦!!
代碼如下:

# -*- 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()

結果如下:
分形樹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章