古一2022 发表于 2022-8-31 18:15:55

海龟绘制-斐波那契黄金螺旋

本帖最后由 古一2022 于 2022-8-31 18:26 编辑


先上代码:
import turtle


def fb(n):
    """斐波那契数递归函数"""
    if n <= 1:
      return n
    return fb(n-1) + fb(n-2)


def draw_fb(n):
    """绘制斐波那契黄金矩形"""
    width = 10# 1 单位的宽度,可看作放大倍数

    to_angle = 270# 初始海龟朝向,朝南
    pos = (0, 0)# 初始海龟坐标
    for i in range(1, n+1):
      x = fb(i)
      x *= width
      ta = to_angle# 每个矩形的初始朝向

      # 回到每一个矩形的起始点,此时抬起画笔,不绘画
      turtle.penup()
      turtle.setpos(pos)
      turtle.pendown()

      # 绘制矩形的四条边
      for j in range(4):
            turtle.setheading(ta)# 设置矩形初始朝向
            turtle.forward(x)# 绘制边
            if j == 1:# 每个矩形第二条边的终点为下一个矩形的起点
                pos = turtle.pos()# 记录下一个矩形的起点
            ta += 90# 绘制完一条边后转 90°

      turtle.setheading(to_angle)# 复位海龟朝向,准备绘制四分之一圆
      turtle.circle(x, 90)# 绘制四分之一圆
      to_angle += 90# 绘制完一条矩形后转 90°

    turtle.exitonclick()


if __name__ == '__main__':
    draw_fb(8)

效果图展示:
https://python-abc.xyz/static/img/7859_1.gif
页: [1]
查看完整版本: 海龟绘制-斐波那契黄金螺旋