python使用turtle绘制分形树


Posted in Python onJune 22, 2018

由于分形树具有对称性,自相似性,所以我们可以用递归来完成绘制。只要确定开始树枝长、每层树枝的减短长度和树枝分叉的角度,我们就可以把分形树画出来啦!!

代码如下:

# -*- coding: utf-8 -*-
'''
绘制分形树
'''

import turtle as tl 

def draw_smalltree(tree_length,tree_angle):
 '''
 绘制分形树函数
 '''
 if tree_length >= 3:
  tl.forward(tree_length) #往前画
  tl.right(tree_angle) #往右转
  draw_smalltree(tree_length - 10,tree_angle)#画下一枝,直到画到树枝长小于3

  tl.left(2 * tree_angle) #转向画左
  draw_smalltree(tree_length -10,tree_angle) #直到画到树枝长小于3

  tl.rt(tree_angle) #转到正向上的方向,然后回溯到上一层
  if tree_length <= 30: #树枝长小于30,可以当作树叶了,树叶部分为绿色
   tl.pencolor('green')
  if tree_length > 30:
   tl.pencolor('brown') #树干部分为棕色
  tl.backward(tree_length) #往回画,回溯到上一层

def main():
 tl.penup()
 #tl.pencolor('green')
 tl.left(90) #因为树是往上的,所以先把方向转左
 tl.backward(250) #把起点放到底部
 tl.pendown()
 tree_length = 100 #我设置的最长树干为100
 tree_angle = 20 #树枝分叉角度,我设为20
 draw_smalltree(tree_length,tree_angle)
 tl.exitonclick() #点击才关闭画画窗口

if __name__ == '__main__':
 main()

结果如下:

python使用turtle绘制分形树

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python编程实现数学运算求一元二次方程的实根算法示例
Apr 02 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Python requests获取网页常用方法解析
Feb 20 Python
Python 在局部变量域中执行代码
Aug 07 Python
Django执行源生mysql语句实现过程解析
Nov 12 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
Python必备技巧之函数的使用详解
Apr 04 Python
python递归函数绘制分形树的方法
Jun 22 #Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 #Python
Python使用pandas处理CSV文件的实例讲解
Jun 22 #Python
python处理csv中的空值方法
Jun 22 #Python
Python实现base64编码的图片保存到本地功能示例
Jun 22 #Python
关于python2 csv写入空白行的问题
Jun 22 #Python
浅谈Python2、Python3相对路径、绝对路径导入方法
Jun 22 #Python
You might like
php 远程关机操作的代码
2008/12/05 PHP
php制作动态随机验证码
2015/02/12 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
javascript面向对象编程代码
2011/12/19 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
laravel5.4+vue+element简单搭建的示例代码
2017/08/29 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
python用装饰器自动注册Tornado路由详解
2017/02/14 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Django 返回json数据的实现示例
2020/03/05 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
如何写自我鉴定
2014/03/19 职场文书
单位计划生育责任书
2015/05/09 职场文书
加班费申请报告
2015/05/15 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
遗愿清单观后感
2015/06/09 职场文书
生日祝酒词大全
2015/08/10 职场文书
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript