南阳理工-3-多边形重心问题
来源:互联网 发布:网络机顶盒安装视频 编辑:程序博客网 时间:2024/05/29 14:36
多边形重心问题
时间限制:3000 ms | 内存限制:65535 KB
难度:5
- 描述
- 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形;
如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;- 输入
- 第一行有一个整数0<n<11,表示有n组数据;
每组数据第一行有一个整数m<10000,表示有这个多边形有m个顶点; - 输出
- 输出每个多边形的面积、重心横纵坐标的和,小数点后保留三位;
- 样例输入
330 10 20 331 10 00 141 10 00 0.50 1
- 样例输出
0.000 0.0000.500 1.0000.500 1.000
- Area(A,B,C)= 1/2 * (↑AB) × (↑AC)=∣ ∣/2特别注意:以上得到是有向面积(有正负)!
- 1:将有n个顶点的多边形以其中一个顶点划分成n-2个三角形
- 2:利用三角形的叉积求面积公式求得每个划分三角形的面积,同时与该三角形重心相乘
- 3:将2步骤所得的积数相加;
- 4:将3所得结果除以多边形面积总和可得多边形重心
#include<stdio.h>#include<stdlib.h>double si(double *x,double *y,int i){ return ((x[i+1]-x[1])*(y[i+2]-y[1])-(x[i+2]-x[1])*(y[i+1]-y[1]))/2;}int main(){ int n,m,i; double *x,*y,sum,GSx,GSy,t; scanf("%d",&n); while(n--){ scanf("%d",&m); x=(double*)malloc((m+1)*sizeof(double)); y=(double*)malloc((m+1)*sizeof(double)); sum=0;//存储多边形的面积 GSx=0; GSy=0;//统计每个划分三角形的面积与重心的总和 for(i=1;i<=m;i++) { scanf("%lf %lf",&x[i],&y[i]); //printf("%.3f %.3f\n",x[i],y[i]); }//for for(i=1;i<=m-2;i++) { //printf("%.3f %.3f %.3f %.3f %.3f %.3f %.3f %.3f\n",x[i+1],x[1],y[i+2],y[1],x[i+2],x[1],y[i+1],y[1]); t=((x[i+1]-x[1])*(y[i+2]-y[1])-(x[i+2]-x[1])*(y[i+1]-y[1]))/2; GSx+=(x[1]+x[i+1]+x[i+2])/3*t; GSy+=(y[1]+y[i+1]+y[i+2])/3*t; sum+=t; //printf("%.3f ",t); } if(sum==0) printf("0.000 0.000\n"); else printf("%.3f %.3f\n",-1*sum,(GSx+GSy)/sum); }//while //system("pause"); return 0;}
- 南阳理工-3-多边形重心问题
- 南阳理工:多边形重心问题
- 南阳理工NYOJ 多边形重心问题
- 【南阳3】多边形重心及面积问题
- 南阳 3 多边形重心问题(数学几何)
- 3 多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- nyoj-3-多边形重心问题
- nyoj-3-多边形重心问题
- NYOJ--3--多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- NYOJ-3 多边形重心问题
- NYOJ 3:多边形重心问题
- NYOJ 3 多边形重心问题
- NYOJ-----3---多边形重心问题
- nginx超时事件的处理
- URLRewrite实现url地址伪静态化
- android之List<T>的空指针问题_List的初始化
- SqlHelper 泛型方法,反射,支持实体类
- URAL 1939 First Seal 解题报告
- 南阳理工-3-多边形重心问题
- 栈的push、pop序列
- 浙江大学PAT上机题解析之1008. Elevator (20)
- MiniGUI在HI3515上的移植
- 拓展训练心得
- Java_Swing系列组件对齐方式
- HDU2227:Find the nondecreasing subsequences
- Oracle 硬解析与软解析
- POJ--2398 -- Toy Storage [计算几何]