案例(2):分形树绘制

案例简述

本次案例描绘的是一个分形树,会通过4个案例一步步进化

v1.0

知识点:
1.引用他人编辑好的库,可以用import <库名>来导入
2.直接调用编写好的模块,放入参数可以直接调用

本次可以调用turtle库来绘制,现有模块如下:


案例(2):分形树绘制_第1张图片

绘图坐标系:


案例(2):分形树绘制_第2张图片

五角星每个角度144度,所以可以先用turtle.forward(50)来绘制线条,然后right(144)右转144度。这样的操作进行5次便可成功绘制五角星。为了减少冗余代码用while循环5次便可。若想增大直接改forward参数就好。

代码参考:

""""
    功能:绘制五角星
    版本:v1.0、
    时间:2019年2月4日16:04:23
"""

import turtle


def main():
    """
        主函数
    """
    # 计数次数
    count = 0

    # 设置循环
    while count != 5:
        turtle.forward(60)
        turtle.right(144)
        count += 1
    turtle.exitonclick()


if __name__ == '__main__':
    main()

v2.0

在v1.0的基础上新增循环操作,先把上述绘制五角星的语句重新用函数定义,写成可以输入五角星的大小就直接绘制,然后通过while语句循环绘制,每次绘制完就增加大小(size)

流程图如下:


案例(2):分形树绘制_第3张图片

知识点:
1.复习函数的定义
2.x += 1等价于 x = x + 1

""""
    功能:绘制五角星
    版本:v2.0
    时间:2019年2月4日16:04:23
    新增功能:重复绘制不同大小的五角星
"""
import turtle

def print_ptg(size):
    """
        绘制五角星
    """
    # 计数次数
    count = 1
    # 设置循环
    while count <= 5:
        turtle.forward(size)
        turtle.right(144)
        count += 1

def main():
    """
        主函数
    """
    # 五角星大小
    size = 50

    # 绘制多个五角星
    while size <= 100:
        # 调用参数
        print_ptg(size)
        size += 10

    turtle.exitonclick()

if __name__ == '__main__':
    main()

v3.0

在v2.0的基础上将函数与循环结合,即形成递归函数。以此绘制2.0的图形

流程图如下:


案例(2):分形树绘制_第4张图片

递归函数:
1.函数定义中调用函数自身的方式叫递归
2.每次函数调用时,参数都会临时保存,不会互相影响
3.达到终止条件时,各层函数结束运算,返回计算结果
4.终止条件的构建是重点,若弄不好则无法返回正常结果

"""
    功能:绘制五角星
    时间:2019年2月7日17:29:49
    版本:3.0
    新增功能:迭代绘制
"""
import turtle

 0def draw_ptg(size):
    """
        迭代绘制五角星
    """
    # 绘制次数
    count = 1
    while count <= 5:
        turtle.forward(size)
        turtle.right(144)
        count += 1

    size += 10
    if size <= 100:
        draw_ptg(size)


def main():
    """
        主函数
    """
    turtle.penup()      # 抬笔
    turtle.backward(200)    # 后退
    turtle.pendown()    # 下笔
    turtle.pensize(2)   # 笔大小
    turtle.color('red')     # 笔颜色

    # 五角星大小
    size = 50
    draw_ptg(size)
    turtle.exitonclick()    # 停止绘制

if __name__ == '__main__':
    main()

v4.0

利用递归函数绘制分形树
分型的几何学基本思想:客观事物具有自相似的层次结构。自相似性是指局部是整体成比例缩小的性质。如图中所示,四周柱状是中间柱状的成比例缩小形状。


案例(2):分形树绘制_第5张图片

分形树绘制流程如下:



分形树绘制操作分析:


案例(2):分形树绘制_第6张图片

知识点:
1.利用递归暂存参数性质

"""
    功能:迭代绘制分形树
    时间:2019年2月7日17:29:49
    版本:1.0
"""
import turtle

def draw_branch(branch_length):
    """
        绘制分形树
    """
    if branch_length > 5:
        # 绘制右侧树枝
        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.right(20)
        turtle.backward(branch_length)

def main():
    """
        主函数
    """
    turtle.left(90)
    turtle.penup()
    turtle.backward(150)
    turtle.pendown()
    draw_branch(90)
    turtle.exitonclick()  # 停止绘制


if __name__ == '__main__':
    main()

完整代码查看码云

你可能感兴趣的:(案例(2):分形树绘制)