計(jì)算幾何中的三角形面積
在計(jì)算幾何里涯呻,我們知道,△ABC的面積就是“向量AB”和“向量AC”兩個(gè)向量叉積的絕對值的一半。其正負(fù)表示三角形頂點(diǎn)是在右手系還是左手系佩研。
所以得到三角形面積:
注意:該方法得到是有向面積(有正負(fù)),有向面積A比面積S其實(shí)更本質(zhì)霞揉!
由三角形推廣到任意多邊形
任意一個(gè)n邊形可以被分成n個(gè)三角形
三角形面積:
將點(diǎn)作為坐標(biāo)原點(diǎn)旬薯,可以化簡為
所以有如下公式:
假設(shè)有n個(gè)角點(diǎn),坐標(biāo)分別為(,)……(,)那角點(diǎn)依次連線圍成的面積就是
def get_area(locations):
area = 0.0
for i in range(len(locations)):
lat = locations[i][0] # 緯度
lng = locations[i][1] # 經(jīng)度
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))