python递归函数绘制分形树的方法

yipeiwu_com6年前Python基础

分形几何学的基本思想:客观事物具有自相似性的层次结构,局部和整体在形态,功能,信息,时间,空间等方面具有统计意义上的相似性,称为自相似性,自相似性是指局部是整体成比例缩小的性质。

我们先看一下我们最终要绘制的图形:

案例分析:


代码:

## 绘制分型树,末梢的树枝的颜色不同

import turtle


def draw_brach(brach_length):


  if brach_length > 5:
    if brach_length < 40:
      turtle.color('green')

    else:
      turtle.color('red')

    # 绘制右侧的树枝
    turtle.forward(brach_length)
    print('向前',brach_length)
    turtle.right(25)
    print('右转20')
    draw_brach(brach_length-15)
    # 绘制左侧的树枝
    turtle.left(50)
    print('左转40')
    draw_brach(brach_length-15)

    if brach_length < 40:
      turtle.color('green')

    else:
      turtle.color('red')


    # 返回之前的树枝上
    turtle.right(25)
    print('右转20')
    turtle.backward(brach_length)
    print('返回',brach_length)

def main():
  turtle.left(90)
  turtle.penup()
  turtle.backward(150)
  turtle.pendown()
  turtle.color('red')

  draw_brach(100)

  turtle.exitonclick()

if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python实现一个点绕另一个点旋转后的坐标

python实现一个点绕另一个点旋转后的坐标

如下所示: (x,y)为要转的点,(pointx,pointy)为中心点,如果顺时针角度为angle srx = (x-pointx)*cos(angle) + (y-pointy)*s...

Python wxPython库Core组件BoxSizer用法示例

Python wxPython库Core组件BoxSizer用法示例

本文实例讲述了Python wxPython库Core组件BoxSizer用法。分享给大家供大家参考,具体如下: wx.BoxSizer: box = wx.BoxSizer(int...

Python读取指定日期邮件的实例

背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6、7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思...

Django中多种重定向方法使用详解

前言 本文使用了Django1.8.2 使用场景,例如在表单一中提交数据后,需要返回到另一个指定的页面即可使用重定向方法 一、 使用HttpResponseRedirect fu...

python3中利用filter函数输出小于某个数的所有回文数实例

我就废话不多说了,直接上代码吧! def _int_iter(): """根据回文数的定义。首先生成一个从0开始的整数无限序列""" n = 0 while True:...