point gravity_center(point* p,int n)
{
double area=0.0;
point ZERO;
ZERO.x = 0;
ZERO.y = 0;
point ret = ZERO;
p[n]=p[0];
for (int i=0; i<n; ++i)
{
ret.x+=cross(p[i],p[i+1],ZERO)*(p[i].x+p[i+1].x);
ret.y+=cross(p[i],p[i+1],ZERO)*(p[i].y+p[i+1].y);
area+=cross(p[i],p[i+1],ZERO);
}
ret.x/=3.0*area,ret.y/=3.0*area;
return ret;
}
上面的函数中cross指的是叉积。
找一个基准点,轮流一圈即可