HDU 3982 半平面交+圆与多边形面积交(二)
,Point a,Point b){ double a1=angle(a-C.c); double a2=angle(b-C.c); double da=fabs(a1-a2); if(da>pi)da=pi*2-da; return dcmp(Cross(b-C.c,a-C.c))*da*C.r*C.r/2.0; } double PolyCircleArea(Circle C,Point *p,int n){ double ret=0; Point sol[2]; p[n]=p[0]; for(int i=0;i
pp[2200]; Point p[100010]; int main() { //freopen("data.in","r",stdin); //freopen("data.out","w",stdout); int T,n; cin>>T; double R; Point dd; for(int t=1;t<=T;t++){ scanf("%lf%d",&R,&n); Point a,b; vector
L; Line s; a=Point(-20000,-20000);b=Point(20000,-20000);s=Line(a,b-a);L.push_back(s); a=Point(20000,-20000);b=Point(20000,20000);s=Line(a,b-a);L.push_back(s); a=Point(20000,20000);b=Point(-20000,20000);s=Line(a,b-a);L.push_back(s); a=Point(-20000,10000);b=Point(-20000,-20000);s=Line(a,b-a);L.push_back(s); for(int i=0;i
ff=HPI(L); n=ff.size(); for(int i=0;i