美文网首页
案例(2):分形树绘制

案例(2):分形树绘制

作者: hwang_zhic | 来源:发表于2019-02-12 15:34 被阅读0次

    案例简述

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

    v1.0

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

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



    绘图坐标系:


    五角星每个角度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)

    流程图如下:


    知识点:
    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的图形

    流程图如下:


    递归函数:
    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

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


    分形树绘制流程如下:



    分形树绘制操作分析:


    知识点:
    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):分形树绘制

          本文链接:https://www.haomeiwen.com/subject/bfdojqtx.html