use*_*357 2 python polygon area
大家早上好!我必须使用python计算多边形的面积.这样做的公式是由(抱歉,不能发布图片..)
(x 0*y 1 - y 0*x 1)+(x 1*y 2 - y 1*x 2)+ ... +(x n-1*y 0 - y n-1*x 0)
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
Run Code Online (Sandbox Code Playgroud)
该公式通过计算构成多边形的线段的原点和每个末端之间的每对矢量的叉积之和来工作.实质上,该区域被计算为下图中绿色和红色三角形区域之间的差异.(请注意,红色三角形部分位于绿色三角形的下方.)
交叉积的符号取决于向量的方向,即,如果我们可以通过向左或向右转动使第二向量与第一向量对齐.因此,您将获得负面或正面区域,具体取决于多边形中的点是顺时针还是逆时针排序.解决方案是正确的,但您需要将abs()
函数应用于结果,因为您不需要符号.
归档时间: |
|
查看次数: |
1245 次 |
最近记录: |