海龟绘制-斐波那契黄金螺旋
本帖最后由 古一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]