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

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

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

1.1 Turtle库介绍

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

python:利用递归函数进行分形树的绘制_第1张图片

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:利用递归函数进行分形树的绘制_第2张图片

你可能感兴趣的:(python:利用递归函数进行分形树的绘制)