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)
基本上我们必须使用一个函数和一个 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)