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 相关文章推荐
基于Django filter中用contains和icontains的区别(详解)
Dec 12 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python3.遍历某文件夹提取特定文件名的实例
Apr 26 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
python命令行参数用法实例分析
Jun 25 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
python默认参数调用方法解析
Feb 09 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python 如何创建一个简单的REST接口
Jul 30 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
怎么使 Mysql 数据同步
2006/10/09 PHP
《APMServ 5.1.2》使用图解
2006/10/23 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
PHP封装的分页类与简单用法示例
2019/02/25 PHP
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python 实现list或string按指定分段
2019/12/25 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
《画》教学反思
2014/04/14 职场文书
促销活动计划书
2014/05/02 职场文书
天坛导游词
2015/02/02 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript