乌龟绘制六角形和六角形网格

问题描述

当前代码

master

我的目标是制作一个六边形网格图案,但是我做得不好。我的第一个问题是,如果运行代码,您会得到一个六边形,但顶部是平坦的,但我无法通过它获得尖角来获得顶部。其次,我尝试制作网格,但网格失败,并且我不确定为什么无法复制相同的六边形并将其克隆到另一个网格中。我将或应该在下面拥有要保存的图像文件

我得到的输出

我试图获得的输出

解决方法

  1. 进入循环之前,旋转30度。

geekyTurtle.right(30)

  1. 要在旁边放置克隆,只需将乌龟放到新位置并再次绘制形状即可:

    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)
    

将其循环放置两次以上

  1. 您可以使用.up().goto(x,y).down()的想法来绘制网格。
,

似乎这是递归可以以分形的方式简化的问题。初始六边形的每一边本身就是六边形,依此类推,填充了可用空间:

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()

enter image description here