用python的turtle画分形树
由于分形树具有对称性,自相似性,所以我们可以用递归来完成绘制。只要确定开始树枝长、每层树枝的减短长度和树枝分叉的角度,我们就可以把分形树画出来啦!! 
代码如下:
# -*- 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运用turtle 画出汉诺塔搬运过程
		python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ... 
- python之turtle画蚊香
		原理:利用turtle绘制圆形,并使圆半径逐步增加 代码如下: import turtle turtle.pensize(30) for i in range(30): turtle.circle(i ... 
- Python——用turtle画一个月饼
		今天是中秋节,首先在这里祝大家中秋快乐!那么提到中秋,我们首先想到的当然是香甜的月饼,所以我今天就在这里画一个月饼送给大家. 那么 要用Python画图,我们必须掌握并运用Turtle库,这个可以自己 ... 
- Python之turtle画同心圆和棋盘
		画饼图 import turtle t = turtle.Pen() for i in range(5): t.penup() t.goto(0, -i*30) t.pendown() t.circl ... 
- python 用turtle 画小猪佩奇
		from turtle import * def nose(x,y):#鼻子 penup()#提起笔 goto(x,y)#定位 pendown()#落笔,开始画 setheading(-30)#将乌龟 ... 
- 使用Python的turtle画小绵羊
		今天学习使用turtle画图,本来想实现个3D效果,结果2D都画了半天,画圆被绕晕了 目标图片: 实现代码: # -*- coding:utf-8 -*- # __author__ :kusy # _ ... 
- 【Python 16】分形树绘制4.0(利用递归函数绘制分形树fractal tree)
		1.案例描述 树干为80,分叉角度为20,树枝长度小于5则停止.树枝长小于30,可以当作树叶了,树叶部分为绿色,其余为树干部分设为棕色. 2.案例分析 由于分形树具有对称性,自相似性,所以我们可以用 ... 
- 【数据结构与算法Python版学习笔记】递归(Recursion)——定义及应用:分形树、谢尔宾斯基三角、汉诺塔、迷宫
		定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def ... 
- *【Python】【demo实验31】【练习实例】【使用turtle画小猪佩奇】
		如下图小猪佩奇: 要求使用turtle画小猪佩奇: 源码: # encoding=utf-8 # -*- coding: UTF-8 -*- # 使用turtle画小猪佩奇 from turtle i ... 
随机推荐
- php将远程图片下载保存到本地
			/* *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getIma ... 
- Unity3D中简单的C#异步Socket实现
			Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自 ... 
- 上传图片时,使用JS获得图片文件大小
			这个方法用于获得图片文件的大小: 在FF,Chrome,IE6,IE7,IE8可用,不支持IE9+.(如果是IE9就需要flash插件了) var getSize = function(oFile,c ... 
- MPAndroidChart -- LimitLine的坑
			好久没有写博客了,最近比较忙,项目中使用了MPAndroidChart,初次使用也比较蠢,很多API都得一个一个查,但有些时候当你想应该有这个API的时候他却没有,就比如今天的主角LimitLine ... 
- SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)
			版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook youngest myrepos //查看到目前为止最新的版本号 $svnadmin dump my ... 
- Ubuntu apt-get update错误解决
			用apt-get命令安装开发软件非常方便,但由于各种原因,经常链接不上软件源,于是需要使用sudo apt-get update命令来更新软件源. 而屋漏偏逢连夜雨,这时候更新命令也罢工,出现各种错误 ... 
- Ubuntu上安装与配置JDK1.8
			Ubuntu上安装与配置JDK1.8 一.下载 下载JDK,由于是Ubuntu. 所以去官网下载tar.gz格式的就可以(ubuntu使用浏览器下载网速比較慢,所以推荐到window上下载好). ht ... 
- 卡友友刷MPOS注册开通流程!
			1.下载友刷APP:打开微信扫描机器背面二维码—点击右上角游览器打开 2. 注册-身份证认证-结算卡绑定:用本人手机号注册完成后,顺着进行身份认证.以及储蓄结算卡绑定.具体看下图: 3.绑定机器:选择 ... 
- 一步一步安装Git控件版本工具
			Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.[2 ... 
- APP接口基础学习一
			PHP面向对象思想 1.客户端发送http请求到达服务器 2.服务器做出响应返回数据(XML,JSON或者其他)到达客户端 XML与JSON 的区别 1.可读性:xml胜出 2.生成数据:json胜出 ... 
