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实现建立SSH连接的方法
Jun 03 Python
Python图像灰度变换及图像数组操作
Jan 27 Python
简单掌握Python中glob模块查找文件路径的用法
Jul 05 Python
Python获取当前路径实现代码
May 08 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
python tornado使用流生成图片的例子
Nov 18 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
python区块链持久化和命令行接口实现简版
May 25 Python
python 使用pandas读取csv文件的方法
Dec 24 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
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
2013/06/28 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
特征脸(Eigenface)理论基础之PCA主成分分析法
2018/03/13 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
Python 解析简单的XML数据
2020/07/24 Python
Python datetime模块的使用示例
2021/02/02 Python
联想中国官方商城:Lenovo China
2017/10/18 全球购物
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
行政管理人员精品工作推荐信
2013/11/04 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
通信工程求职信
2014/07/16 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
企业投资意向书
2015/05/09 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
python基础之停用词过滤详解
2021/04/21 Python