【发布时间】:2014-02-15 14:09:32
【问题描述】:
大家早上好! 我必须使用 python 计算多边形的面积。 执行此操作的公式由(抱歉,还不能发布图片..)给出。
(x0*y1 - y0*x1) + (x 1*y2 - y1*x2) + ... + (xn-1*y0 - yn-1*x0)
2
这是我想出的代码。但是,它会导致(正确的)负值,我不知道为什么。 将区域时间简单地乘以 -0.5 是否有效,还是我的代码有问题? 非常感谢任何帮助!
polygon = [[0,0],[-1,5],[2,3],[1,5],[3,6],[4,5],[5,3],[8,-2],[4,-4],[2,-5]]
area = 0.0
n = len(polygon)
for i in range(n):
i1 = (i+1)%n
area += polygon[i][0]*polygon[i1][1] - polygon[i1][0]*polygon[i][1]
area *= 0.5
print 'area = ', area
【问题讨论】:
-
我想你会发现结果的符号仅仅取决于你是顺时针还是逆时针绕点。因此,只需获取结果的
abs()就可以了。