#include #include double sx[40], sy[40], sr[40]; int n; double x,y, dx, dy; int last; const inf = 1000000000; double inter(double sx, double sy, double sr) { double l1, l2; double A= dx*dx+dy*dy; // cout<=0) { l1 = (-B+sqrt(B*B-4*A*C))/2/A; l2 = (-B-sqrt(B*B-4*A*C))/2/A; if (l1<0) l1 = inf; if (l2<0) l2 = inf; if (l1>l2) return l2; else return l1; } else return inf; } int calc(double sx, double sy, double sr,double l) { double w; double px = x+dx*l; double py = y+dy*l; w = acos(((sx-px)*dx + (sy-py)*dy)/ (sqrt((sx-px)*(sx-px)+(sy-py)*(sy-py))*sqrt(dx*dx+dy*dy))); w -= acos(0); // cout<=0.00001) w = -w; double w2 = 2*w; dx2 = cos(w2)*dx-sin(w2)*dy; dy2 = sin(w2)*dx+cos(w2)*dy; dx = dx2; dy = dy2; x = px; y = py; return 0; } main() { int i,j; ifstream ein("reflect.in"); for (int kase=1; ; kase++) { ein>>n; if (n==0) break; cout<<"Scene "<>sx[i]>>sy[i]>>sr[i]; ein>>x>>y>>dx>>dy; last = -1; for (i=0; i<11; i++) { double min=inf; int best=-1; for (j=0; jr) { min=r; best = j; } } if (i!=0) cout<<' '; if (min==inf) { cout<<"inf"; break; } calc(sx[best], sy[best], sr[best], min); if (i<10) cout<