python计算任意多边形面积
看了一些方法网上的资料,也自己倒腾了一些想法。 然后看到这个大神的博客(《计算任意多边形的面积》),我就服气了。
我把代码转换为python:
# 计算任意多边形的面积,顶点按照顺时针或者逆时针方向排列 def compute_polygon_area(points): point_num = len(points) if(point_num < 3): return 0.0 s = points[0][1] * (points[point_num-1][0] - points[1][0]) #for i in range(point_num): # (int i = 1 i < point_num ++i): for i in range(1, point_num): # 有小伙伴发现一个bug,这里做了修改,但是没有测试,需要使用的亲请测试下,以免结果不正确。 s += points[i][1] * (points[i-1][0] - points[(i+1)%point_num][0]) return abs(s/2.0) if __name__ == '__main__': # polygon = [[0,0], [2,0],[2,2], [0,2]] #4.0 polygon = [[3,3],[4,2],[6,1],[7,6],[9,7],[3,16],[0,3],[2,4],[1,5],[6,6]] #62.0 # polygon = [[3,3],[4,2],[6,4],[7,6],[9,7],[3,9],[0,5],[2,4],[4,4]] #29.0 print(compute_polygon_area(polygon))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
做了基础验证, 没有问题,注意给出多边形顶点的顺序,建议逆时针方向依次输入。
参考:
《计算任意多边形的面积》
赞 (0)