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):
        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))

做了基础验证, 没有问题。

参考:
《计算任意多边形的面积》

猜你喜欢

转载自blog.csdn.net/u012939880/article/details/88193763