#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
using namespace std;
struct node
{
double x;
double y;
};
double area(node p1,node p2,node p3)
{
double ans;
ans=p1.x*p2.y+p2.x*p3.y+p3.x*p1.y-p2.x*p1.y-p3.x*p2.y-p1.x*p3.y;//这里换了一种求面积的方法
return ans/2.0;
}
int main()
{
int t;
int n;
int i;
double sum,sum1,sum_x,sum_y;
node p1,p2,p3;
scanf("%d",&t);
while(t--)
{
sum=0;
sum_x=0;
sum_y=0;
scanf("%d",&n);
scanf("%lf%lf",&p1.x,&p1.y);
scanf("%lf%lf",&p2.x,&p2.y);
for(i=3; i<=n; i++)
{
scanf("%lf%lf",&p3.x,&p3.y);
sum1=area(p1,p2,p3);
sum+=sum1;
sum_x+=(p1.x+p2.x+p3.x)*sum1;//这里注意
sum_y+=(p1.y+p2.y+p3.y)*sum1;
p2=p3;//这里注意
}
printf("%.2lf %.2lf\n",sum_x/sum/3,sum_y/sum/3);
}
return 0;
}
hdu 1115 多边形重心
最新推荐文章于 2019-12-04 12:26:39 发布