请问大神这种多边形面积怎么求呀python?

2021-03-05 10:34发布

[图]提示用户输入假定存储在工作目录中的文本文件的名称。我们假设如果名称是有效的,那么文件由所有包含4个整数的行组成,这些整数由空格分隔,格式为x1 y1 x2 y2,其中(x1,y1)和(x2,y2)表示...

提示用户输入假定存储在工作目录中的文本文件的名称。我们假设如果名称是有效的,那么文件由所有包含4个整数的行组成,这些整数由空格分隔,格式为x1 y1 x2 y2,其中(x1,y1)和(x2,y2)表示矩形的两个对角的坐标。我们假设所有的矩形都是不同的,或者适当地重叠,或者是不相交的(它们的某些边或某些角彼此不接触)。求周长


2条回答
studentaaa
2021-03-05 20:49

# 计算任意多边形的面积,顶点按照顺时针或者逆时针方向排列

def compute_polygon_area(points):

    point_num = len(points)

    if(point_num < 3>

    s = points[0][1] * (points[point_num-1][0] - points[1][0])

    #for i in range(point_num): # (int i = 1 i < point>

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

一周热门 更多>