微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python-Turtle 绘制具有 3 个树干的递归树

如何解决Python-Turtle 绘制具有 3 个树干的递归树

我有一个问题,我必须用 3 个树干制作一棵树,但我制作的唯一一棵树只有 2 个树干。示例如下:

import turtle
import math
t = turtle.Turtle()
t.shape("turtle")
t.lt(90)

lv = 11
l = 100
s = 17

t.penup()
t.bk(l)
t.pendown()
t.fd(l)

def draw_tree(l,level):
l = 3.0/4.0*l
t.lt(s)
t.fd(l)
level +=1
if level<lv:
draw_tree(l,level)

t.bk(l)
t.rt(2*s)
t.fd(l)
if level<=lv:
draw_tree(l,level)
t.bk(l)
t.lt(s)
level -=1

t.speed(10)
draw_tree(l,2)

有人可以帮忙吗?

解决方法

该解决方案似乎与您已有的解决方案略有不同。与其只做左侧然后右侧,不如做左、中、右。然后调整您的角度、长度和递归级别,直到获得令人满意的结果:

from turtle import Screen,Turtle

LEVELS = 8  # recursion depth limit
MAX_LIMB_LENGTH = 120  # pixels
LIMB_ANGLE = 34  # degrees

def draw_tree(length,level):
    if level > LEVELS:
        return

    turtle.left(LIMB_ANGLE)
    turtle.forward(length)
    draw_tree(3/4 * length,level + 1)
    turtle.backward(length)

    turtle.right(LIMB_ANGLE)
    turtle.forward(length)
    draw_tree(3/4 * length,level + 1)
    turtle.backward(length)

    turtle.left(LIMB_ANGLE)

screen = Screen()
screen.tracer(False)

turtle = Turtle()
turtle.setheading(90)

turtle.penup()
turtle.backward(2 * MAX_LIMB_LENGTH)
turtle.pendown()
turtle.forward(MAX_LIMB_LENGTH)

draw_tree(MAX_LIMB_LENGTH,1)

turtle.hideturtle()
screen.tracer(True)
screen.exitonclick()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。