繁体   English   中英

用海龟图形绘制多边形

[英]Drawing polygon with turtle graphics

我正在尝试使用turtle库在 python 中绘制一个多边形。 我想设置大小以适合屏幕大小,但我不知道如何。 现在我尝试了两种方法,它确实有效,但我希望无论多边形适合屏幕的大小如何。 例如,如果我设置 size = 50 和 n = 100,它就不会显示在屏幕上。

from turtle import * 
def main():
    sides = int(input('Enter the number of sides of a polygon: '))
    angle = 360/sides
    size = 500/sides
# =============================================================================
#     if sides <= 20:
#         size = 50
#     else: 
#         size= 10
# =============================================================================
    for i in range(sides):
        forward(size)
        left(angle)
        i += 1
    hideturtle()
    done()   
main()

如果我理解正确,您会问如何选择size (边长)以使形状填充但不超过屏幕。 首先,我们需要检查屏幕的高度或宽度(以较小者为准):

min_dimension = min(screensize())  # by default, 300 pixels

外接半径通过多边形所有点的半径。 为了使多边形适合屏幕, min_dimension半径应等于min_dimension 反转圆周半径公式,我们可以编写一个函数来确定合适的边长:

def side_length(circumradius, number_of_sides):
    return circumradius * 2 * math.sin(math.pi / number_of_sides)

为了填满屏幕,我们应该开始在屏幕底部附近而不是在中心绘制。

def main():
    sides = int(input('Enter the number of sides of a polygon: '))
    angle = 360/sides
    min_dimension = min(screensize())
    size = side_length(min_dimension, sides)
    right(90 + angle / 2)
    
    # Start from near the bottom of the screen
    penup()
    forward(min_dimension)
    left(90 + angle / 2)
    pendown()

    # Draw polygon
    for _ in range(sides):
        forward(size)
        left(angle)
    hideturtle()
    done()   

(从技术上讲,这使得形状比屏幕略小,特别是对于边数较少的情况。应该使用国题而不是圆周率。)

暂无
暂无

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

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