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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
基于Python实现的扫雷游戏实例代码
Aug 01 Python
Python切片用法实例教程
Sep 08 Python
详解Python中heapq模块的用法
Jun 28 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
python实现简单加密解密机制
Mar 19 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
python中update的基本使用方法详解
Jul 17 Python
django url到views参数传递的实例
Jul 19 Python
python3正则模块re的使用方法详解
Feb 11 Python
详解python内置模块urllib
Sep 09 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 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
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
php使用session二维数组实例
2014/11/06 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
python对象及面向对象技术详解
2016/07/19 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
python实现视频分帧效果
2019/05/31 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
澳大利亚领先的在线礼品网站:Gifts Australia
2020/08/15 全球购物
医学类个人求职信范文
2014/02/05 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
校园演讲稿汇总
2014/05/21 职场文书
2015年采购部工作总结
2015/04/23 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang