文章目录

  • 一、不规则多边形重心求解
    • 1.1 三角形重心计算方法
    • 1.2 三角形面积计算方法
    • 1.3 多边形面积的计算方法
    • 1.4 不规则多边形的重心计算方法

一、不规则多边形重心求解

1.1 三角形重心计算方法

设三角形的三个顶点位置为A(x1,y1)A(x_1,y_1)A(x1​,y1​),B(x2,y2)B(x_2,y_2)B(x2​,y2​),C(x3,y3)C(x_3,y_3)C(x3​,y3​),那么△ABC△ABC△ABC的重心GGG坐标为

x=x1+x2+x33,y=y1+y2+y33x=\frac{x_1+x_2+x_3}{3}, y=\frac{y_1+y_2+y_3}{3} x=3x1​+x2​+x3​​,y=3y1​+y2​+y3​​

1.2 三角形面积计算方法

计算三角形的面积使用向量积的方式,下图中,假设P点为原点,A(x1,y1)A(x_1,y_1)A(x1​,y1​),B(x2,y2)B(x_2,y_2)B(x2​,y2​)。

以AAA,BBB和坐标原点PPP构成的△ABC△ABC△ABC的面积为
S=PB⃗×PA⃗2=x2y1−x1y22S=\frac{\vec{PB}\times \vec{PA}}{2}=\frac{x_2y_1-x_1y_2}{2} S=2PB×PA​=2x2​y1​−x1​y2​​

1.3 多边形面积的计算方法

对于多边形的情况,我们可以将多边形切分为多个三角形,分别进行求解。那么这个剖分点$ P$ 我们可以设在哪里呢?这里先给出结论:这个剖分点可以设置在多边形的内部,也可以设置到外部。

为什么这个剖分点可以设置到外部呢?我们可以通过简单的三角形情况来推广到多边形的情况。 对于△ABC△ABC△ABC,我们把剖分点设置在其外部$ P$ 的一点上,

△ABC△ABC△ABC的面积SSS为
S=12(PB⃗×PC⃗+PC⃗×PA⃗+PA⃗×PB⃗)S=\frac{1}{2}(\vec{PB}\times \vec{PC}+\vec{PC}\times \vec{PA}+\vec{PA}\times \vec{PB}) S=21​(PB×PC+PC×PA+PA×PB)
设P(x0,y0),P(x_0,y_0),P(x0​,y0​),A(x1,y1)A(x_1,y_1)A(x1​,y1​),B(x2,y2)B(x_2,y_2)B(x2​,y2​),C(x3,y3)C(x_3,y_3)C(x3​,y3​)

△ABC△ABC△ABC的面积SSS可以写为
S=12(x1y2−x2y1+x2y3−x3y2+x3y1−x1y3)S=\frac{1}{2}\left ( x_1y_2-x_2y_1+x_2y_3-x_3y_2+x_3y_1-x_1y_3\right ) S=21​(x1​y2​−x2​y1​+x2​y3​−x3​y2​+x3​y1​−x1​y3​)

这时可以发现跟外部点PPP没有关系,只跟顶点的坐标有关系。

1.4 不规则多边形的重心计算方法

不规则图形一般没有中心点这个概念,所以只能使用重心来代替中心点,这里先给出一个公式:

平面多边形XXX可以被剖分为nnn个有限的简单图形X1,X2,…,XnX_1,X_2,…,X_nX1​,X2​,…,Xn​,这些简单图形的重心点为GiG_iGi​,面积为SiS_iSi​,那么这个平面多边形的重心点坐标G(x,y)G(x,y)G(x,y)为
x=∑ni=1GixSi∑i=1nSi,y=∑ni=1GiySi∑i=1nSix=\frac{\sum_{n}^{i=1}G_{ix}S_i}{\sum_{i=1}^{n} S_i},y=\frac{\sum_{n}^{i=1}G_{iy}S_i}{\sum_{i=1}^{n} S_i} x=∑i=1n​Si​∑ni=1​Gix​Si​​,y=∑i=1n​Si​∑ni=1​Giy​Si​​

  • 不规则多边形重心计算
def get_gravity_point(points):"""@brief      获取多边形的重心点@param      points  The points@return     The center of gravity point."""if len(points) <= 2:return list()area = Decimal(0.0)x, y = Decimal(0.0), Decimal(0.0)for i in range(len(points)):lng = Decimal(points[i][0])lat = Decimal(points[i][1])nextlng = Decimal(points[i-1][0])nextlat = Decimal(points[i-1][1])tmp_area = (nextlng*lat - nextlat*lng)/Decimal(2.0)area += tmp_areax += tmp_area*(lng+nextlng)/Decimal(3.0)y += tmp_area*(lat+nextlat)/Decimal(3.0)x = x/areay = y/areareturn [float(x), float(y)]

不规则多边形重心求解相关推荐

  1. POJ 3855 计算几何·多边形重心

    思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: ...

  2. hdu 1115(多边形重心)

    求多边形重心的题目大致有这么几种:  1.质量集中在顶点上      n个顶点坐标为(xi,yi),质量为mi,则重心  X = ∑( xi×mi ) / ∑mi  Y = ∑( yi×mi ) / ...

  3. HDOJ(1115)多边形重心

    Lifting the Stone http://acm.hdu.edu.cn/showproblem.php?pid=1115 题目描述:输入n个顶点(整数),求它们围成的多边形的重心. 算法:以一 ...

  4. HDU 1115 Lifting the Stone(求多边形重心)

    HDU 1115 大意:给你个n,有n个点,然后给你n个点的坐标,求这n个点形成的多边形的重心的坐标. 1 struct point 2 { 3 double x, y; 4 } P[1000010] ...

  5. NYOJ 3:多边形重心问题

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  6. 【opencv-python不规则多边形 ROI提取】

    opencv-python不规则多边形 ROI提取 import cv2import numpy as np import joblibpts = [] # 用于存放点# 统一的:mouse call ...

  7. java计算一个多边形的重心_多边形重心问题 java

    多边形重心问题 java 看题目 点这里 题目描述: 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以 ...

  8. 南阳 3 多边形重心问题(数学几何)

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  9. 不规则多边形区域的面积计算算法

    不规则多边形区域的面积计算算法 最近在写一个显微图像分析处理方面的程序,里面有一个功能是计算一个不规则的多边形区域的面积.因此花了点时间研究这个算法该如何写.研究了一番之后,算是找到了个比较靠谱的算法 ...

最新文章

  1. java 编写小工具 尝试 学习(四)
  2. 精细化容量管理的设备成本优化之路
  3. 智能指针shared_ptr的用法
  4. java中动态顺序死锁问题
  5. python没有那个文件或目录_fatal error: Python.h: 没有那个文件或目录 解决方法
  6. nginx+memcache实现页面缓存应用
  7. 为了防止程序重排序,慎用volatile
  8. 余承东吐槽苹果续航;微软 IE 浏览器被曝漏洞;React Native 0.61.0 发布 | 极客头条...
  9. No resource found that matches the given name 'android:Theme.Material.Light.DarkActionBar'
  10. 如何注册谷歌账号、邮箱(22.8.23亲测可用)
  11. 空间中直线到平面的距离的公式是什么?
  12. TeamViewer突破地域限制,解决办公难题
  13. 【问题解决】Selenium——NoSuchWindowException: Browsing context has been discarded
  14. ubuntu分区大小
  15. 我用分析了42万字的歌词,为了搞清楚民谣歌手们在唱些什么
  16. 苹果开发者账号(公司级)和邓白氏编码(D-U-N-S)申请记录(2015.06)
  17. 一些有趣的鸽巢原理的题目
  18. 抖音删除作品会有哪些影响,限流降权该如何挽回丨国仁网络资讯
  19. 亚利桑那州立大学周纵苇:研习 U-Net ——现有的分割网络创新 | AI 研习社74期大讲堂...
  20. 计算机课真多,这节电脑课真爽啊

热门文章

  1. 父爱动画代码python_情人节锦囊:简单的python表白程序(动画效果)
  2. 这个微信小游戏我就坚持了五秒 好玩的休闲游戏推荐
  3. 1025.ws index.php.,程控电话交换机系统局数据和用户数据
  4. 【Android】【打开方式】Android11用其它应用打开微信文件
  5. 从一个男人的角度告诉你如何选老婆 (实在是写的太好了 忍不住转一个)
  6. 《 ERP高级计划》书的解读之零物料约束和能力约束逻辑(蔡颖)(转)
  7. 在线支付系列【2】支付宝和微信支付发展史
  8. 【VBA】Excel拆分表格,并且复制格式
  9. Python分析薛之谦与李雨桐互撕微博
  10. 【json】json文件中文乱码