使用多边形制作给定半径的圆

时间:2019-12-21 10:20:19

标签: python turtle-graphics

我正在教一些孩子抽象的概念。我当前使用的示例是将正方形,三角形,星形等概括为多边形。

def polygon(l, s, a):
    for i in range(s):
        forward(l)
        left(180 - a)

要制作一个正方形,我会写polygon(100, 4, 90)和一个三角形polygon(100, 3, 60)

我知道python turtle具有制作圆形的功能,但是我想使用多边形功能制作圆形。

现在的问题是,如何使用多边形构造给定半径的圆?

2 个答案:

答案 0 :(得分:1)

似乎我必须回答自己的问题。为了用多边形做成一个圆,我想到了:

called from FuncACurrent time is 1576933097323
called from FuncBCurrent time is 1576933097323
td before sendig false
called from FuncB and inserting new row.
td before sendig false
called from FuncA and inserting new row.

答案 1 :(得分:1)

您的答案很棒! (+1)如果我们想更好地模仿乌龟自己的circle()方法,我会做一些调整。首先是,一旦半径达到合理大小,乌龟圆的默认精度为60边。其次,乌龟的圆圈开始的角度略有不同:

from math import pi
from turtle import *

def polygon(length, sides, angle):
    for _ in range(sides):
        forward(length)
        left(180 - angle)

def circle_via_polygon(radius, precision=60):
    total_internal_angle = 360
    angle = total_internal_angle / precision
    circumference = 2 * pi * radius
    left(angle / 2)  # match turtle's circle() method
    polygon(circumference / precision, precision, 180 - angle)
    right(angle / 2)  # ditto

color('blue')
circle(150)  # turtle's own circle()

color('red')
circle_via_polygon(150)  # circle() using polygon()

exitonclick()

enter image description here