用Python计算多边形的面积、周长和圆内边长
我有一些函数可以计算内切多边形的面积、周长和边长,但我想找一种类似的通用方法来计算外接多边形的这些属性。
# 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
了。