美文网首页
案例(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):分形树绘制

    案例简述 本次案例描绘的是一个分形树,会通过4个案例一步步进化 v1.0 知识点:1.引用他人编辑好的库,可以用i...

  • 绘制分形树

    """利用递归函数绘制分形树""" import turtle """假设在length是25时的循环里,绘制右边...

  • 分形树的绘制

    利用递归函数绘制分形树(fractal tree) 分形几何学的基本思想:客观事物具有自相似的层次结构,局部与整体...

  • Python绘制分形树(一)

    一步一步了解turtle这个库,先绘制个五角星练手 画布 画笔控制命令: 运动命令: 五角星绘制 参考: http...

  • Python绘制分形树(二)

    首先我们来分析一下,绘制分形树大概分以下4个部分: 绘制右侧树枝 返回树枝节点 绘制左侧树枝 返回树枝节点 根据以...

  • scratch3数学之美09-线条之美

    大家好,我是爱编程的小熊,上一节我们学习了绘制分形之树,分形之美让人惊叹。这节,让我们来学习绘制会动的线条,看看线...

  • Python 学习笔记 ① (01-11)

    课程包括以下八个案例: 汇率兑换分形树绘制BMI瘦身工具52周存钱挑战判断一年中的第几天密码强度判断掷骰子模拟(随...

  • 分形树

    书名:代码本色:用编程模拟自然系统作者:Daniel Shiffman译者:周晗彬ISBN:978-7-115-3...

  • 分形图的绘制

    更多算法(语言为JavaScript) 持续更新... 戳我去GitHub看更多算法问题>>>>目录 戳我去Git...

  • OpenGL入门案例

    此案例是绘制一个三角形,相当于hello word的入门级案例 绘制前,先了解几个简单的知识点 1. 工具类 着色...

网友评论

      本文标题:案例(2):分形树绘制

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