利用求多边形面积的方法把多边形分成多个三角形,算出每个小三角形的重心,再用质点的重心求法 求出多边形重心。
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int n;
double x0,y0;
double x1,y1,x2,y2;
double x,y;
double area,totalarea;
double mx,my;
int t;
cin>>t;
while(t--)
{
cin>>n;
mx=my=totalarea=0;
cin>>x0>>y0;
x1=x0;
y1=y0;
for(int i=0;i<n-1;i++)
{
scanf("%lf%lf",&x2,&y2);
area=(x1*y2-x2*y1);
totalarea+=area;
x=(x1+x2);
y=(y1+y2);
mx+=area*x;
my+=area*y;
x1=x2;
y1=y2;
}
area=(x1*y0-x0*y1);
totalarea+=area;
x=(x1+x0);
y=(y1+y0);
mx+=area*x;
my+=area*y;
cout<<fixed<<setprecision(2)<<mx/totalarea/3<<" "<<my/totalarea/3<<endl;
}
return 0;
}