乌龟绘制六边形和六边形网格
Turtle drawing a hexagon and hexagon grid
当前代码
#import the turtle modules
import turtle
#Start a work Screen
ws=turtle.Screen()
#Define a Turtle Instance
geekyTurtle=turtle.Turtle()
#executing loop 6 times for 6 sides
for i in range(6):
#Move forward by 90 units
geekyTurtle.forward(90)
#Turn left the turtle by 300 degrees
geekyTurtle.left(300)
我的目标是制作一个六边形网格图案,但我未能正确完成。我的第一个问题是,如果您 运行 代码得到一个六边形,但顶部是平的,我无法让它的尖角到达顶部。其次,我尝试制作网格但失败了,我不确定为什么我无法复制相同的六边形并将其克隆到另一个旁边。我将或应该有一个我要在下面使用的图像的文件。
我得到的输出:
我试图获得的输出:
- 进入循环之前,转 30 度。
geekyTurtle.right(30)
为了在旁边有它的克隆,只需将乌龟放到新的地方并重新绘制形状即可:
for i in range(6):
geekyTurtle.forward(90)
geekyTurtle.left(300)
geekyTurtle.up()
geekyTurtle.goto(90 * 3 ** .5, 0)
geekyTurtle.down()
for i in range(6):
geekyTurtle.forward(90)
geekyTurtle.left(300)
将其放入一个循环中以使其具有两次以上
- 您可以使用
.up()
、.goto(x, y)
和.down()
的思想来绘制网格。
这似乎是一个递归可以以 fractal-like 方式简化的问题。初始六边形的每一边本身就是一个六边形,依此类推,填充可用的 space:
from turtle import Screen, Turtle
SIDE = 75 # pixels
def hexagon(side, depth):
if depth > 0:
for _ in range(6):
turtle.forward(side)
turtle.right(60)
hexagon(side, depth - 1)
turtle.left(120)
screen = Screen()
screen.tracer(False) # because I have no patience
turtle = Turtle()
turtle.penup()
turtle.width(2)
turtle.sety(-SIDE) # center hexagons on window
turtle.pendown()
turtle.left(30) # optional, orient hexagons
hexagon(SIDE, depth=6) # depth depends on coverage area
turtle.hideturtle()
screen.tracer(True)
screen.exitonclick()
当前代码
#import the turtle modules
import turtle
#Start a work Screen
ws=turtle.Screen()
#Define a Turtle Instance
geekyTurtle=turtle.Turtle()
#executing loop 6 times for 6 sides
for i in range(6):
#Move forward by 90 units
geekyTurtle.forward(90)
#Turn left the turtle by 300 degrees
geekyTurtle.left(300)
我的目标是制作一个六边形网格图案,但我未能正确完成。我的第一个问题是,如果您 运行 代码得到一个六边形,但顶部是平的,我无法让它的尖角到达顶部。其次,我尝试制作网格但失败了,我不确定为什么我无法复制相同的六边形并将其克隆到另一个旁边。我将或应该有一个我要在下面使用的图像的文件。
我得到的输出:
我试图获得的输出:
- 进入循环之前,转 30 度。
geekyTurtle.right(30)
为了在旁边有它的克隆,只需将乌龟放到新的地方并重新绘制形状即可:
for i in range(6): geekyTurtle.forward(90) geekyTurtle.left(300) geekyTurtle.up() geekyTurtle.goto(90 * 3 ** .5, 0) geekyTurtle.down() for i in range(6): geekyTurtle.forward(90) geekyTurtle.left(300)
将其放入一个循环中以使其具有两次以上
- 您可以使用
.up()
、.goto(x, y)
和.down()
的思想来绘制网格。
这似乎是一个递归可以以 fractal-like 方式简化的问题。初始六边形的每一边本身就是一个六边形,依此类推,填充可用的 space:
from turtle import Screen, Turtle
SIDE = 75 # pixels
def hexagon(side, depth):
if depth > 0:
for _ in range(6):
turtle.forward(side)
turtle.right(60)
hexagon(side, depth - 1)
turtle.left(120)
screen = Screen()
screen.tracer(False) # because I have no patience
turtle = Turtle()
turtle.penup()
turtle.width(2)
turtle.sety(-SIDE) # center hexagons on window
turtle.pendown()
turtle.left(30) # optional, orient hexagons
hexagon(SIDE, depth=6) # depth depends on coverage area
turtle.hideturtle()
screen.tracer(True)
screen.exitonclick()