|
GetCircleCircleIntersection(Circle c1,Circle c2,Point& p1,Point& p2){
double d=Length(c1.c-c2.c);
if(dcmp(d)==0){
if(dcmp(c1.r-c2.r)==0) return -1;//两圆重合
return 0;
}
if(dcmp(c1.r+c2.r-d)<0) return 0;
if(dcmp(fabs(c1.r-c2.r)-d)>0) return 0;
double a=Angle(c2.c-c1.c,Vector(1,0));
double da=acos((c1.r*c1.r+d*d-c2.r*c2.r)/(2*c1.r*d));
p1=c1.point(a-da);p2=c1.point(a+da);
if(p1==p2) return 1;
return 2;
}
//--------------------------------------
//--------------------------------------
//--------------------------------------
//--------------------------------------
//--------------------------------------
int n;
Point arr[25],arr2[25];
double fuck(Line l){
Point p;
int i;
for(i=0;i0||dcmp(p.y-arr2[i].y)<0){
if(i==0) return arr[0].x;
Point q=GetLineIntersection(l.p,l.v,arr[i],arr[i]-arr[i-1]);
p=GetLineIntersection(l.p,l.v,arr2[i],arr2[i]-arr2[i-1]);
return max(p.x,q.x);
}
}
return arr[n-1].x;
}
int main()
{
while(scanf("%d",&n)!=EOF&&n){
for(int i=0;i
|