多边形面积,形心(重心?)计算--Python

**

多边形面积,形心(重心?)计算–Python

**

0.参考

1.鞋带公式
2.形心计算
3.代码参考

1.计算高斯面积–鞋带公式

公式介绍
其实简单点就是
简单版
**注意:**这两个版本点的下表有点区别,一个从0开始一个从1开始,然后关键一个就是最后一个点+1就成了第一个点。
代码如下:

def cal_area(vertices): #Gauss's area formula 高斯面积计算
    A = 0.0
    point_p = vertices[-1]
    for point in vertices:
        A += (point[1]*point_p[0] - point[0]*point_p[1])
        point_p = point
    return abs(A)/2

2.形心(重心)计算公式

这里说重心可能不太准确
形心公式
代码如下:

def cal_centroid(points):
    A = cal_area(points)
    c_x, c_y = 0.0, 0.0
    point_p = points[-1] # point_p 表示前一节点
    for point in points:
        c_x +=((point[0] + point_p[0]) * (point[1]*point_p[0] - point_p[1]*point[0]))
        c_y +=((point[1] + point_p[1]) * (point[1]*point_p[0] - point_p[1]*point[0]))
        point_p = point

    return c_x / (6*A), c_y / (6*A)

3.测试

points = [[-1., -1.],
         [-2., -1.],
         [-2., -2.],
         [-1., -2.]]
points = np.array(points)
x, y = cal_centroid(points)
print('x : ', x, 'y : ',y)

输出:
x : -1.5 y : -1.5

注意:点要按序输入,最好逆时针!
如果这些点是按顺时针顺序编号的,面积A(如上计算)将是负的;然而,即使在这种情况下,质心坐标也是正确的。
如果不按序,你自己试试结果。

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值