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项目发布为exe可执行程序过程分享
Oct 23 Python
Python获取单个程序CPU使用情况趋势图
Mar 10 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
Python设计模式之门面模式简单示例
Jan 09 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
python框架flask入门之路由及简单实现方法
Jun 07 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
Python执行时间的几种计算方法
Jul 31 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python实现自动整理文件的脚本
Dec 17 Python
pytorch中的model.eval()和BN层的使用
May 22 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php生成RSS订阅的方法
2015/02/13 PHP
PHP实现C#山寨ArrayList的方法
2015/07/16 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
jscript之List Excel Color Values
2007/06/13 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
JavaScript实用技巧(一)
2010/08/16 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
利用JavaScript检测CPU使用率自己写的
2014/03/22 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
python文件和目录操作函数小结
2014/07/11 Python
Python与Java间Socket通信实例代码
2017/03/06 Python
python使用matplotlib画饼状图
2018/09/25 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
使用Pycharm分段执行代码
2020/04/15 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
计算机操作自荐信
2013/12/07 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
房产协议书范本2014
2014/09/30 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技