利用python中的turtle绘制分形树的右侧

2024-10-03 17:22:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是一个初学者,正在尝试使用python的turtle通过递归函数生成一个分形树。到目前为止,我已经得到了这个函数,它生成了我的整个分形的左边,但是它没有生成右边。我怎么解决这个问题?任何和所有的建议将不胜感激!在

def svTree( trunkLength, levels ):
    """ uses the turtle drawing functions to return a tree with a specified number of levels
    input: two integers, trunkLength and levels
    """

    newtrunkLength = trunkLength *.5


    forward(trunkLength)

    if levels ==1:
           penup()


    else:
        left(45)         
        forward(trunkLength * 0.5)
        backward(trunkLength * 0.5)
        right(90)
        forward(trunkLength * 0.5)
        backward(trunkLength * 0.5)
        left(90)
        return svTree(newtrunkLength,levels-1)

Tags: 函数returndefleft建议forward分形levels
1条回答
网友
1楼 · 发布于 2024-10-03 17:22:42

在递归左分支之前保存海龟的位置,然后重置海龟并绘制右分支:

def svTree(length, level):
   if level == 1:
      return

   #draw level's trunk
   down()
   forward(length)
   up()

   #save turtle position and heading
   pos = position()
   hdg = heading()

   #draw left branch
   left(45)
   svTree(length / 2, level - 1)

   #restore turtle position and heading
   setposition(pos)
   setheading(hdg)

   #draw right branch
   right(45)
   svTree(length / 2, level - 1)

如果不想在每次方法调用时保存位置和标题,还可以确保海龟光标在每次方法调用开始时的位置和标题相同。在

^{pr2}$

相关问题 更多 >