如何在python中成为一个圆圈?

时间:2016-12-06 02:13:40

标签: python geometry turtle-graphics

以下是Thinkpython 2e中的代码。

 import turtle
 import math

 bob = turtle.Turtle()

 def polygon(t, n, length):
     angle = 360 / n
     for i in range(n):
         t.fd(length)
         t.lt(angle)    

 def circle(t, r):
     circumference = 2 * math.pi * r
     n = 50
     length = circumference / n
     polygon(t, n, length)

 circle(bob,50)
 turtle.mainloop()

我不明白如何成为一个圆圈,我认为它将是一个50边的多边形,我是对的吗?

3 个答案:

答案 0 :(得分:4)

圆圈具有无限多个点,屏幕具有有限多个像素。你是对的,你不能在屏幕上画出真正的圆圈。这并不是说绘制多边形是在屏幕上逼近圆的唯一方法。正如@Qwerty在评论中正确指出的那样,您也可以使用trig函数。

然而,用多边形近似圆是一种古老的方法,并且是pi近似的经典方式。此外 - 这对海龟来说是一种有趣的运动。

答案 1 :(得分:1)

我有一段时间没有在python中编程(特别是与龟库),但如果我记得,有一种方法更容易

import turtle

circumfrence = 80

turtle = turtle.Turtle()
turtle.shape("circle")
turtle.circle(circumfrence / 2)

这很简单!

答案 2 :(得分:0)

关于circle()函数的奇怪部分是n固定为50.在大圆和小圆的极端情况下,这可能不是最优的,也许应该更具动态性。至于50边多边形与圆形,请使用turtle.circle()命令进行测试:

from turtle import Turtle, Screen

radius = 100
sides = 50

bob = Turtle(shape="turtle")
bob.width(2)

bob.pencolor("red")
bob.circle(radius)

bob.pencolor("green")
bob.circle(radius, steps=sides)

bob.hideturtle()

screen = Screen()
screen.exitonclick()

enter image description here

turtle.circle()方法使用多边形近似,但它计算边的数量作为半径的函数,最大值为60.对于半径100以上,它实际上只使用28步,所以我们的50-双边多边形可能 更多 准确!