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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
Mar 30 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
浅谈Python数据类型判断及列表脚本操作
Nov 04 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
Aug 08 Python
Anaconda+vscode+pytorch环境搭建过程详解
May 25 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
使用keras时input_shape的维度表示问题说明
Jun 29 Python
Pycharm Git 设置方法
Sep 15 Python
Django如何实现防止XSS攻击
Oct 13 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超级全局变量数组小结
2012/10/04 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
优化javascript的执行速度
2010/01/23 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
2017/02/22 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
委托证明模板
2014/09/16 职场文书
个人买房协议书范本
2014/10/06 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
React四级菜单的实现
2022/04/08 Javascript
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技