Python 乌龟用正方形画圆

Python Turtle drawing circle with squares

正在尝试用乌龟画这张图,卡在了最后一点画方成圆。 squares to make circle 到目前为止,我已经尝试过只画出每条线的点,但由于存在一些不一致而花费了很长时间。到目前为止我所拥有的是

def square(side_length):
    for i in range(4):
        turtle.fd(side_length)
        turtle.lt(90)

square (150)

turtle.penup()
        ####New Square###
turtle.left(90)
turtle.forward(75)
turtle.left(90)
turtle.forward(30)
turtle.right(180)
turtle.right(45)
turtle.pendown()


def square(side_length):
    for i in range(4):
        turtle.fd(side_length)
        turtle.lt(90)
square (150)

这画了两个正方形。现在我只需要想出一种方法将两个正方形顺时针旋转 30 度 4 次。是否有我可以用来执行此操作的函数,或者我是否只需要进行大量数学运算并计算以绘制每条线?

这是两者的结合。您需要做一些数学运算才能找到每个方块的起点。但是,一旦将海龟移动到那个点并将其转向正确的方向,绘制四个边的语句块就可以正常工作了。

绘制正方形的最后一条边后,乌龟坐在外圈上,面向该点的半径为 45 度。

  • 将乌龟转 60 度以穿过圆的浅弦。
  • 将它移动到适当的距离以遍历该和弦(这就是您的数学用武之地)。
  • 将海龟再转 60 度。您现在可以绘制下一个正方形了。

对每个添加的方块重复这些步骤。

尽管名称如此,turtle.circle 可用于绘制其他正多边形。它还可用于仅绘制多边形的一部分。结合上下拾笔,可以轻松画出一系列同心旋转的图形。

例如,

 for i in range(19):
     turtle.circle(100, 360, 4)  # draw a square
     turtle.penup()
     # "draw" 10 degrees of the same circle, with the pen up, just to move the pen
     turtle.circle(100, 10, 4)
     turtle.pendown()

(圆只是一个多边形,其边长足以近似为一个圆。如果您没有明确指定第三个参数,turtle 会根据半径选择一个足够大的值。)