三角形重心公式
假设 A,B,C 三点的坐标为,则其重心坐标
为
多边形重心公式
平面多边形可以被剖分为 n个有限的三角形
,这些简单图形的重心点为
,面积为
,设这个平面多边形的重心点坐标为
,则
1、对公式的理解
同计算多边形面积一样,我们可以给多边形进行三角剖分,以代表多边形的总面积,则:
多边形重心横坐标 = 多边形剖分的每一个三角形重心的横坐标 * 该三角形的面积之和 / 多边形总面积
多边形重心纵坐标 = 多边形剖分的每一个三角形重心的纵坐标 * 该三角形的面积之和 / 多边形总面积
所以这里就把问题拆分成了三个小问题:
- 求每个剖分出来的三角形的重心。
- 求每个剖分出来的三角形的面积。
- 求多边形的面积。
2、代码实现
def get_centerpoint(locations):
area = 0.0
C_x,C_y = 0.0,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]
fg = (lat*lng1 - lng*lat1)/2.0
area += fg
C_x += fg*(lat+lat1+0)/3.0
C_y += fg*(lng+lng1+0)/3.0
C_x = C_x/area
C_y = C_y/area
return C_x,C_y
if __name__ == '__main__':
locations = [[116.568627,39.994879],[116.564791,39.990511],[116.575012,39.984311]]
print(get_centerpoint(locations))
网友评论