如何计算2D多边形的面积?

假设2d空间中一系列不自相交的点,确定所得多边形面积的有效方法是什么?

附带说明,这不是功课,我也不在寻找代码。我正在寻找可以用于实现自己的方法的描述。我有从点列表中拉出一系列三角形的想法,但是我知道有很多关于凸多边形和凹多边形的边沿案例,我可能不会注意到。

回答:

这是标准方法

AFAIK。基本上求和每个顶点周围的叉积。比三角剖分简单得多。

Python代码,以表示为(x,y)顶点坐标列表的多边形表示,从最后一个顶点到第一个顶点隐式环绕:

def area(p):

return 0.5 * abs(sum(x0*y1 - x1*y0

for ((x0, y0), (x1, y1)) in segments(p)))

def segments(p):

return zip(p, p[1:] + [p[0]])

大卫·莱哈维(David

Lehavi)评论:值得一提的是,该算法为何起作用:这是格林定理对-y和x函数的一个应用;完全按照平面仪的工作方式

进一步来说:

上面的公式=

integral_over_perimeter(-y dx + x dy) =

integral_over_area((-(-dy)/dy+dx/dx) dy dx) =

2 Area

以上是 如何计算2D多边形的面积? 的全部内容, 来源链接: utcz.com/qa/405587.html

回到顶部