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 相关文章推荐
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python中元组,列表,字典的区别
May 21 Python
Python中的pack和unpack的使用
Mar 12 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
Nov 29 Python
解决Keras 中加入lambda层无法正常载入模型问题
Jun 16 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
js模仿jquery的写法示例代码
2013/06/16 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
JavaScript利用闭包实现模块化
2017/01/13 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
React-redux实现小案例(todolist)的过程
2019/09/29 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
在Django的session中使用User对象的方法
2015/07/23 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
python 日期排序的实例代码
2019/07/11 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
python 基于wx实现音乐播放
2020/11/24 Python
电钳专业个人求职信
2014/01/04 职场文书
学校读书活动总结
2014/06/30 职场文书
交通安全责任书范本
2014/07/24 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
毕业生个人自荐书
2015/03/05 职场文书
功夫熊猫观后感
2015/06/10 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS
MySQL数据库查询之多表查询总结
2022/08/05 MySQL