polygon——关于多边形的重心
2014-05-21 17:58
260 查看
关键词: polygon_多边形 coordinate_坐标 edge_边 centre of gravity_重心
输入:case 多边形的边数 各个点的坐标(逆时针)
输出:该多边形的重心(结果保留两位小数)
输入:case 多边形的边数 各个点的坐标(逆时针)
输出:该多边形的重心(结果保留两位小数)
Sample Input
1 4 5 0 0 5 -5 0 0 -5
Sample Output
0.00 0.00
代码:#include <iostream> #include <iomanip> using namespace std; const int maxn=1000002; struct point { double x,y; }; point data[maxn]; point gravity(point po[],int n)//求重心 { point p,s;; double tp,area=0,tpx=0,tpy=0; p.x=po[0].x;p.y=po[0].y; for(int i=1;i<=n;i++) { s.x=po[(i==n)?0:i].x; s.y=po[(i==n)?0:i].y; tp=p.x*s.y-s.x*p.y; area+=tp/2.0; tpx+=(p.x+s.x)*tp; tpy+=(p.y+s.y)*tp; p.x=s.x; p.y=s.y; } s.x=tpx/(6*area); s.y=tpy/(6*area); return s; } int main() { int t,n; cin>>t; for(int ti=1;ti<=t;ti++) { cin>>n; for(int i=0;i<n;i++) cin>>data[i].x>>data[i].y; point temp=gravity(data,n); cout<<setiosflags(ios::fixed)<<setprecision(2)<<temp.x<<" "<<temp.y<<endl; } return 0; }
相关文章推荐
- 关于Google Map 叠加层之Polyline(折线)、Polygon(多边形)、InfoWindow(信息窗口)
- 关于OGR读取多边形-Polygon(GDAL 2.0版本之前)
- The centre of polygon (多边形重心)
- 计算几何:关于求多边形的重心
- 再学 GDI+[9] DrawPolygon - 绘制多边形
- WinAPI: CreatePolyPolygonRgn - 建立多个多边形构成的区域
- 如何求多边形的重心
- 关于多边形的布尔运算
- WinAPI: CreatePolygonRgn - 建立多边形区域
- simple polygon fill program(简单多边形填充程序)
- 求多边形重心(计算几何)
- hdu 1115 Lifting the Stone 多边形的重心
- 【Silverlight】Bing Maps学习系列(五):绘制多边形(Polygon)图形 推荐
- 过凸多边形重心的任意直线能将图形面积等分?
- 求多边形重心
- hdu 1115 求多边形重心
- 【Silverlight】Bing Maps学习系列(五):绘制多边形(Polygon)图形
- 关于Direct3D中用于控制三维多边形的着色模式
- ArcEngine根据点集ringclass,生成多边形polygon
- hdu 1115 lift the stone<求多边形的重心>