如何画同心六边形?
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 面向右)。给定 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 的评论。
我需要使用 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 面向右)。给定 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 的评论。