我需要使用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()
以下是image
的链接如何在六边形内制作六至六次六边形,然后移动到下一个六边形?
答案 0 :(得分:1)
mcve的概念适用于开发以及在此处发布。从简单的函数或代码块开始,制作同心六边形,而不必担心线条的颜色,粗细或样式。
关于六边形的关键是“半径”(中心到角落)与边缘长度(角落到角落)相同。 (例如,同心五边形更难,需要一些触发。)假设你想在x轴上有两个角。如果中心是x,y,则从x + e开始,y在120的旋转(其中0朝右)。给定x
,y
,半径边长的列表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的评论。