分形树的绘制——python第二课

一、绘制五角星

  1. 引入turtle

 

'''
    作者:兰兰兰
    功能:五角星绘制
    版本: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()

 

 

 

 

 

原文地址:https://www.cnblogs.com/lanzhiyuan/p/8441152.html