UVA 303 Pipe (二)

2014-11-23 20:00:47 · 作者: · 浏览: 20
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;i
0||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