Python 海龟嵌套 polygons/growing 形状

Python Turtle nested polygons/growing shapes

基本上我们必须使用一个函数和一个 for 循环来做到这一点(每个多边形之间有 20 个单位):

但它必须适用于任何边长的多边形。到目前为止我有:

import turtle
tess = turtle.Turtle()
wn = turtle.Screen()
def draw_poly(t, n, sz):
    """
        Makes Turtle t draw an n sided polygon of size sz
    """
    for i in range(n):
        t.forward(sz)
        t.left(360/n)


sz = 20         #Length of sides
n = 4          #Number of sides

PosX = 0
PosY = 0
for i in range(5):
    draw_poly(tess, n, sz)
    tess.penup()
    PosX = PosX - 20
    PosY = PosY - 20
    tess.goto(PosX,PosY)
    sz = sz + 40
    tess.pendown()
wn.mainloop()

我的问题是它只适用于正方形,任何其他长度的 sides/side 都会使其偏离中心。我怎样才能解决这个问题?

你只需要一点三角学知识。在脚本的顶部,添加行

from math import pi, tan

然后计算新的PosX,PosY为

PosX = PosX - 20
PosY = PosY - 20/tan(pi/n)