叉积 有向面积,不解释了。
#include<cstring> #include<cstdio> #include<iostream> using namespace std; struct point { double x,y; }p[1000005]; int main() { int t; scanf("%d",&t); while(t--){ int n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%lf %lf",&p[i].x,&p[i].y); p[n].x=p[0].x;p[n].y=p[0].y; double ansarea=0,ansx=0,ansy=0; for(i=0;i<n;i++){ double temparea; temparea=0.5*(p[i].x*p[i+1].y-p[i].y*p[i+1].x); double tempx=((p[i].x+p[i+1].x+0)*1.0)/3; double tempy=((p[i].y+p[i+1].y+0)*1.0)/3; ansx+=tempx*temparea; ansy+=tempy*temparea; ansarea+=temparea; } printf("%.2lf %.2lf\n",ansx/ansarea,ansy/ansarea); } }
hdu 2036 计算多边形面积,布布扣,bubuko.com
原文:http://blog.csdn.net/cnh294141800/article/details/21448639