分形樹的繪制——python第二課


一、繪制五角星

  1. 引入turtle
  2.  

 

'''
    作者:蘭蘭蘭
    功能:五角星繪制
    版本:1.0
    日期:02/09/2018

'''
import turtle

def main ():
    '''
        主函數
    '''
    i = 1
    while i <= 5:
        turtle.forward(50)
        turtle.right(144)
        i = i+1
    turtle.exitonclick()


if __name__ == "__main__":
    main()

  1. Turtle庫函數

   Turtle.forward(x)   向前划x

   Turtle.backward(x)

   Turtle.right(x)      向右轉x°

   Turtle.left(x)

   Turtle.exitonclick()  點擊關閉畫布

   Turtle.penup()     抬起畫筆

   Turtle.pendown()   放下畫筆

   Turtle.pencolor(‘s’)  畫筆顏色,參數為字符串

 

二、重復繪制不同大小的五角星(遞歸函數)

  1. 使用迭代函數

 

'''
    作者:蘭蘭蘭
    功能:五角星繪制
    版本:2.0
    日期:02/10/2018
    2.0新增功能:用迭代函數繪制重復不同大小的五角星

'''
import turtle

def draw_pentagon_pentagram(size):
    # 繪制五角星
    # 計數器
    i = 1
    while i <= 5:
        turtle.forward(size)
        turtle.right(144)
        i = i + 1
    if size <= 200:
        size += 20
        draw_pentagon_pentagram(size)
def main ():
    '''
        主函數
    '''
    turtle.penup()
    turtle.backward(100)
    turtle.pendown()
    turtle.pensize(1.5)
    turtle.pencolor('yellow')

    size = 50
    #繪制五角星
    draw_pentagon_pentagram(size)

    turtle.exitonclick()


if __name__ == "__main__":
    main()

 

 

  1. 遞歸函數

在函數中調用本身的方式,達到終止條件,各層逐層結束運算

 

 

三、分形樹的繪制

  1. 使用遞歸函數繪制分形樹

   

 

'''
    作者:蘭蘭蘭
    功能:利用遞歸函數分形樹繪制
    版本:1.0
    日期:02/11/2018
'''

import turtle

def draw_branch(branch_length):
    '''
        繪制分形樹
    '''

    if branch_length >=5:
        # 設置樹梢為綠色,樹干為棕色
        if (branch_length-15) <= 5:
            turtle.pencolor('green')
        else:
            turtle.pencolor('brown')
        #繪制右側樹枝
        turtle.pendown()
        turtle.forward(branch_length)
        print('向前',branch_length)
        turtle.right(20)
        print('向右轉20度')
        draw_branch(branch_length-15)

        #繪制左側樹枝
        turtle.left(40)
        print('向左轉40度')
        draw_branch(branch_length-15)


        #返回之前的樹枝
        turtle.penup()
        turtle.rt(20)
        print('向右轉20度')
        turtle.backward(branch_length)
        print('向后',branch_length)


def main():
    '''
        主函數

    '''

    #畫筆粗細
    turtle.pensize(2)
    #初始位置
    turtle.left(90)
    turtle.penup()
    turtle.backward(100)
    turtle.pendown()
    #調用函數繪制分形樹
    draw_branch(100)

    turtle.exitonclick()

if __name__ == '__main__':
    main()

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM