如何画同心六边形?

How to draw concentric hexagons?

我需要使用 Python 海龟图形随机绘制同心六边形(每组 4 到 10 个)(见图)。我可以随机绘制六边形,但不能绘制同心六边形:

import turtle
from random import randint

window = turtle.Screen()
window.bgcolor("yellow")
brad= turtle.Turtle()
brad.color("blue")
window.colormode(255)

def drawPoly(sideLen, noOfsides):
    for i in range(noOfsides):
        brad.forward(sideLen)
        brad.left(360/noOfsides)

for i in range(20):
   sideLen = randint(20,150)
   xpos = randint(-200,200)
   ypos = randint(-200,200)
   brad.pensize(randint(1,3))
   brad.pencolor(randint(1,255),randint(1,255),randint(1,255)) 
   brad.penup()
   brad.setpos(xpos,ypos)
   brad.pendown()
   drawPoly(sideLen,6)


window.exitonclick()

这是 link 到 image

如何在一个六边形内做六边形4到10次,然后移动到下一个六边形?

mcve 的概念适用于开发和发帖。从制作同心六边形的简单函数或代码块开始,无需担心线条的颜色、粗细或样式。

六边形的关键在于 'radius'(中心到角)与边长(角到角)相同。 (例如,同心五边形更难,需要一些三角。)假设您想要在 x 轴上有两个角。如果中心是 x,y,则从 x+e,y 开始旋转 120 度(其中 0 面向右)。给定 xy、半径边长列表 edges 和处于提笔状态的乌龟 t,以下应该有效。

for edge in edges:
    t.setpos(x+e, y)
    t.setheading(120)
    t.pendown()
    for i in range(6):
        t.forward(e)
        t.left(60)
    t.penup()

编辑:将 setangle 替换为 setheading,感谢 cdlane 的评论。