利用递归函数进行分形树的绘制

         要绘制分形树,不能不提到turtle,下面将介绍绘制分形树的一些知识及详细步骤。

1.1 Turtle库介绍

        Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形,绘图方向如下图所示。

python画树叶代码 python怎么画树状图_python画树叶代码

1.2 常见函数

turtle.penup() 抬起画笔,之后移动画笔不绘制形状

turtle.pendown() 落下画笔,之后移动画笔绘制形状

turtle.pensize() 设置画笔宽度

turtle.pencolor() 设置画笔颜色,常用的颜色:white black grey darkgreen gold violet purple

turtle.right(degree) 顺时针移动degree°

turtle.left(degree) 逆时针移动degree°

turtle.forward(distance)  向当前画笔方向移动distance像素长度

turtle.backward(distance) 向当前画笔方向移动distance像素长度

2.1 递归函数

       函数定义中调用函数本身的方式称为递归,能够非常简洁的解决重要问题,每次函数调用时,各函数逐层结束运算,返回计算结果,要注意终止条件的构建,否则递归无法正常返回结果。

2.2  分形几何学

       分形几何学的基本思想:客观事物具有自相似的层次结构,局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似性,称为自相似性。自相似性是指局部是整体成比例缩小的性质。

2.3  代码


import turtle def draw_tree(size, angle, gap): if size > 5: # 绘制右边的树 turtle.forward(size) turtle.right(angle) draw_tree(size - gap, angle, gap) # 绘制左边的树 turtle.left(angle * 2) draw_tree(size - gap, angle, gap) turtle.right(angle) # 最后一层叶子为绿色,其他为树干部分,棕色 if size <= gap: turtle.pencolor('green') else: turtle.pencolor('brown') # 往回画,回溯到上一层 turtle.backward(size) def main(): """ 主函数 """ # 因为树是往上的,所以先把方向转左 turtle.left(90) # 把起点放到底部 turtle.penup() turtle.backward(200) turtle.pendown() # 传递参数,分别为树的长度,树枝开叉角度,树枝间距 size = int(input('输入树的长度:')) angle = int(input('输入树枝开叉角度:')) gap = int(input('输入树枝间距:')) draw_tree(size, angle, gap) # 点击才关闭画画窗口 turtle.exitonclick() if __name__ == '__main__': main()


2.4  效果图

python画树叶代码 python怎么画树状图_分形_02