算法导论第31章第一节第8题。只要是边不相交的简单多边形,也就是说,不仅凸多边形,还有各种奇形怪状的凹多边形,都可以用格林公式求出面积。
格林公式:若函数P(x,y), Q(x,y)在由一条或几条光滑曲线所围成的闭区域D上连续,且有连续的一阶偏导数,则有
L为区域D的边界曲线,并取正方向。
边不相交的简单多边形正好是由数条线段围成的闭区域,所以可以使用格林公式。
令P=0, Q=x,则面积S =
设第i个点的坐标为
,第i + 1个点
的坐标为
,则线段
的参数式为
,
所以,
所以面积。
上述公式可以计算任意简单多边形的面积,包括三角形,四边形,六边形。
# P is list of vertices of the polygon
def polygon_area(P):
n = len(P)
P.append(P[0])
S = 0
for i in range(0, n):
S = S + (P[i][0] + P[i + 1][0]) * (P[i + 1][1] - P[i][1])
return 0.5 * abs(S)
作者:王二
链接:https://www.zhihu.com/question/53259589/answer/134574326
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。