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