用Python计算多边形的面积、周长和圆内边长

1 投票
1 回答
4311 浏览
提问于 2025-04-18 06:39

我有一些函数可以计算内切多边形的面积、周长和边长,但我想找一种类似的通用方法来计算外接多边形的这些属性。

内切多边形

# Area of an equal sided polygon with given radius and number of sides
def polygon_area(r, n):
    return ((n*pow(r, 2))/2)*sin(2*pi/n)

# Perimeter of an equal sided polygon with given radius and number of sides
def polygon_perimeter(r, n):
    return 2*n*r*sin(pi/n)

# Side length of an equal sided polygon with given radius and number of sides
def polygon_side(r, n):
    return polygon_perimeter(r, n)/n

答案可能和“内切半径”有关,就像这张图所示。问题是,我只知道圆的半径:

内外圆

1 个回答

2

你只需要在你现有的公式中使用一个叫做“内切圆半径”的因素(apothem = radius * cos(pi/n)),我没有检查你的公式是否正确:

# Area of an equal sided polygon with given radius and number of sides
def polygon_area_outer(r, n):
    return n * r**2 / 2 * sin(2*pi/n) / cos(pi/n)**2

# Side length of an equal sided polygon with given radius and number of sides
def polygon_side_outer(r, n):
    return 2 * r * sin(pi/n) / cos(pi/n)

# Perimeter of an equal sided polygon with given radius and number of sides
def polygon_perimeter_outer(r, n):
    return polygon_side_outer(r, n) * n

我调整了你函数的顺序,让perimeter(周长)基于side(边长)来计算,而不是反过来。这样在计算多边形的边长时,就不用先乘以n再除以n了。

撰写回答