AI新时空

计算任意不规则图形的面积

2019-06-06  本文已影响0人  Byte猫

计算几何中的三角形面积

在计算几何里,我们知道,△ABC的面积就是“向量AB”和“向量AC”两个向量叉积的绝对值的一半。其正负表示三角形顶点是在右手系还是左手系。


所以得到三角形面积:

注意:该方法得到是有向面积(有正负),有向面积A比面积S其实更本质!

由三角形推广到任意多边形

任意一个n边形可以被分成n个三角形


三角形面积:

将点作为坐标原点,可以化简为

所以有如下公式:

假设有n个角点,坐标分别为(x_1,y_1)……(x_n,y_n)那角点依次连线围成的面积就是
S=((x_1*y_2-x_2*y_1)+(x_2*y_3-x_3*y_2)+…+(x_n*y_1-x_1*y_n))/2

def get_area(locations):
    area = 0.0

    for i in range(len(locations)):
        lat = locations[i][0]  # 纬度
        lng = locations[i][1]  # 经度
 
        if i == len(locations)-1:
            lat1 = locations[0][0]
            lng1 = locations[0][1]
        else:
            lat1 = locations[i+1][0]
            lng1 = locations[i+1][1]

        area += (lat*lng1 - lng*lat1)/2.0

    return abs(area)

if __name__ == '__main__':

    locations = [[116.568627,39.994879],[116.564791,39.990511],[116.575012,39.984311]]
    print(get_area(locations))
上一篇 下一篇

猜你喜欢

热点阅读