首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-Turtle绘制具有3条主干的递归树

Python-Turtle绘制具有3条主干的递归树
EN

Stack Overflow用户
提问于 2021-03-27 17:26:51
回答 1查看 58关注 0票数 0

我有一个问题,我必须用3根树干做一棵树,但我做的唯一一棵树是用2根树干。下面是示例:

代码语言:javascript
复制
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)

有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-30 05:16:19

这个解决方案看起来只是你已经拥有的东西的一个细微的变化。不是只做左边然后做右边,而是做左边,中间和右边。然后调整你的角度,长度和递归级别,直到你得到一个满意的结果:

代码语言:javascript
复制
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.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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66829782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档