编程语言
首页 > 编程语言> > 在Python中绘制分形树

在Python中绘制分形树

作者:互联网

我正在尝试在Python中绘制一个分形树,该树具有3个分支.我知道如何绘制有2个分支但有3个分支的树…不确定
试图找到例子,但不能.只发现有两个分支的树的例子.
有人有任何想法怎么做吗?

对于2个分支树,我使用以下代码:

import turtle
def tree(f_lenght, min_lenght=10):
    """
    Draws a tree with 2 branches using recursion
    """
    turtle.forward(f_lenght)
    if f_lenght > min_lenght:
        turtle.left(45)
        tree(0.6*f_lenght, min_lenght)
        turtle.right(90)
        tree(0.6*f_lenght, min_lenght)
        turtle.left(45)
    turtle.back(f_lenght)

turtle.left(90)
tree(100)
turtle.exitonclick()

解决方法:

这是一个扩展的示例.使用您的方法创建分支很容易使它们重叠,因此我添加了一些参数来帮助实现这一点.随意使用代码,但这是任意递归级别的示例.

import turtle
def tree(f_length, spray=90., branches=2, f_scale=0.5, f_scale_friction=1.4, min_length=10):
    """
    Draws a tree with 2 branches using recursion
    """
    step = float(spray / (branches - 1))
    f_scale /= f_scale_friction
    turtle.forward(f_length)
    if f_length > min_length:
        turtle.left(spray / 2)
        tree(f_scale * f_length, spray, branches, f_scale, f_scale_friction, min_length)
        for counter in range(branches - 1):
            turtle.right(step)
            tree(f_scale * f_length, spray, branches, f_scale, f_scale_friction, min_length)
        turtle.left(spray / 2)
    turtle.back(f_length)

turtle.left(90)
tree(80, spray=120, branches=4)
turtle.exitonclick()

标签:turtle-graphics,fractals,python
来源: https://codeday.me/bug/20191028/1952952.html