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)

相关推荐