Python Turtle嵌套多边形/生长形状

时间:2015-10-02 00:38:42

标签: python turtle-graphics

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

nested squares

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

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()

我的问题是它只适用于正方形,而任何其他数量的边/边长使它偏离中心。我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

from math import pi, tan

然后计算新的PosX,PosY为

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