多边形的重心
来源:互联网 发布:淘宝开店审核不通过 编辑:程序博客网 时间:2024/04/29 15:31
多边形的重心的计算方法:
类型1:质量集中在端点上 n个顶点坐标为(xi,yi),质量为mi,则重心
X = ∑( xi×mi ) / ∑mi
Y = ∑( yi×mi ) / ∑mi
特殊地,若每个点的质量相同,则
X = ∑xi / n
Y = ∑yi / n
类型2:质量分布均匀。
我们可以将其中的n个点分割成(n-2)个三角形,然后,这个三角形的重心当做这个点,每一块三角形的面积为其质量
X=∑(xi*si)/∑si; (2<=i<n); (其中的(xi,yi)为这n-2个三角形的重心)
Y=∑(yi*si)/∑si; (2<=i<n);
特殊地,质量均匀的三角形重心:
X = ( x0 + x1 + x2 ) / 3
Y = ( y0 + y1 + y2 ) / 3
类型3:质量分布不均匀 积分(目前不会)
例题
HDU1115 Lifting the Stone http://acm.hdu.edu.cn/showproblem.php?pid=1115
分析: 对应上面的类型二
#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct point{ double x,y;};double cross( point A,point B,point C){ return (C.x-A.x)*(B.y-A.y)-(C.y-A.y)*(B.x-A.x);}int main(){ int t,n; scanf("%d",&t); while(t--){ double tmpx,tmpy,tmps,sx,sy; scanf("%d",&n); tmpx=0,tmpy=0,tmps=0; sx=sy=0; point a,b,c; scanf("%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y); for(int i=2;i<n;i++){ scanf("%lf%lf",&c.x,&c.y); double s = cross(a,b,c); sx=a.x+b.x+c.x; sy=a.y+b.y+c.y; tmps+=s; tmpx+=s*sx; tmpy+=s*sy; b=c; } printf("%.2lf %.2lf\n",tmpx/tmps/3.0,tmpy/tmps/3.0); } return 0;}
0 0
- 多边形的重心
- 获取多边形的重心
- 多边形的重心
- 多边形的重心(转)
- 如何求多边形的重心
- poj 1385(多边形的重心)
- 计算几何-多边形的重心
- POJ 1385 多边形的重心
- 计算几何-多边形的重心
- 计算几何-多边形的重心
- 计算几何-多边形的重心
- 计算几何-多边形的重心
- 计算几何-多边形的重心
- 求任意多边形的重心
- 多边形重心
- 多边形重心
- 多边形重心
- 多边形重心
- 利用朴素贝叶斯(Navie Bayes)进行垃圾邮件分类
- 56 最长公共字串
- normal 、sysdba、 sysoper 、sys,sysdba,dba概念—区别
- windows 8上源码编译安装mongodb 2.6.5 总结
- 父子页面操作
- 多边形的重心
- eclipse 创建maven项目
- iOS开发asi使用(六)ASIHTTPRequest使用download cache
- 1014.10.09
- 57 用俩个栈实现队列
- windows gtk+开发环境搭建方法详解(图解)
- 第一章总结
- BZOJ 3209 花神的数论题 数位DP+数论
- Qt5.3连接MySQL