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中enumerate函数遍历元素用法分析
Mar 11 Python
Python面向对象编程基础解析(二)
Oct 26 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
python调用API实现智能回复机器人
Apr 10 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
keras和tensorflow使用fit_generator 批次训练操作
Jul 03 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
python实现socket简单通信的示例代码
Apr 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加Nginx实现动态裁剪图片方案
2014/03/10 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP如何实现跨域
2016/05/30 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
django中的HTML控件及参数传递方法
2018/03/20 Python
python 整数越界问题详解
2019/06/27 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
惠普香港官方商店:HP香港
2019/04/30 全球购物
亿企通软件测试面试题
2012/04/10 面试题
办公室主任岗位职责
2013/11/08 职场文书
自立自强的名人事例
2014/02/10 职场文书
国际会计专业求职信
2014/08/04 职场文书
支部书记四风对照材料
2014/08/28 职场文书
2015年消防工作总结
2015/04/24 职场文书
python实现剪贴板的操作
2021/07/01 Python
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL