繁体   English   中英

Python中的多边形

[英]Polygons in Python

我一直在尝试找出如何使用Polygons的方法找到PI的近似值。 并绘制出近似于PI的多边形。

我已经看到了多种近似PI的方法,但是没有一种方法使用Turtle在屏幕上写出多边形(因此您可以看到近似的视觉效果)有人可以向我解释如何这样做吗?

任何帮助将非常感激。 这更多是一个学习问题,然后是错误。

采用一种新方法,我已经使用乌龟图形为Craig Wood的Pi-Archimedes代码(来自他的“ 数学与Python的乐趣”系列)制作动画。

此代码仅说明了内切的,均匀的多边形。 它不使用pi,而是从每个面估计它,并将日益精确的结果输出到控制台:

from math import sqrt
from turtle import Turtle, Screen

SCALE = 300
ITERATIONS = 7

def draw_circle(turtle):
    turtle.goto(0, -SCALE)
    turtle.pendown()
    turtle.circle(SCALE)
    turtle.penup()

def inscribe_circle(turtle, sides, edge_length):
    turtle.goto(0, -SCALE)
    turtle.setheading(0)
    turtle.left(180 / sides)
    turtle.pendown()
    for _ in range(sides):
        turtle.forward(edge_length * SCALE)
        turtle.left(360 / sides)
    turtle.penup()

# based on code and analysis from http://www.craig-wood.com/nick/articles/pi-archimedes/
def pi_archimedes(turtle, n):
    """ Calculate n iterations of Archimedes PI recurrence relation """

    polygon_edge_length_squared = 2.0
    polygon_edge_length = sqrt(polygon_edge_length_squared)
    polygon_sides = 4

    inscribe_circle(turtle, polygon_sides, polygon_edge_length)
    print(polygon_sides * polygon_edge_length / 2)

    for _ in range(n - 1):
        polygon_sides *= 2
        polygon_edge_length_squared = 2 - 2 * sqrt(1 - polygon_edge_length_squared / 4)
        polygon_edge_length = sqrt(polygon_edge_length_squared)
        inscribe_circle(turtle, polygon_sides, polygon_edge_length)
        print(polygon_sides * polygon_edge_length / 2)

yertle = Turtle()
yertle.penup()

draw_circle(yertle)

pi_archimedes(yertle, ITERATIONS)

yertle.hideturtle()

Screen().exitonclick()

在此处输入图片说明

希望这可以让您从自己的Archimedes Pi插图开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM