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代码调试的几种方法总结
Apr 15 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
详解Python字典小结
Oct 20 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
python实现登录密码重置简易操作代码
Aug 14 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
python中adb有什么功能
Jun 07 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 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中DOMElement操作xml文档实例演示
2013/03/26 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
关于js datetime的那点事
2011/11/15 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python脚本实现自动发带图的微博
2016/04/27 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
简单了解Django项目应用创建过程
2020/07/06 Python
python爬取招聘要求等信息实例
2020/11/20 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
平面设计专业大学生职业规划书
2014/03/12 职场文书
经典公益广告词
2014/03/13 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
雷人标语集锦
2014/06/19 职场文书
创业计划书之密室逃脱
2019/11/08 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
php访问对象中的成员的实例方法
2021/11/17 PHP
git中cherry-pick命令的使用教程
2022/06/25 Servers