E - 台球碰撞
在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。受撞击后,球沿极角为a的射线(即:x正半轴逆时针旋转到此射线的角度为a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射角等于入射角)。
如果球的速率为v,s个时间单位之后球心在什么地方?
100 100 80 10 5 90 2 23
110 100 70 10 5 180 1 9999
0 0 0 0 0 0 0 0
80.00 56.00
71.00 10.00
无
想法:估计是几何水题
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int t; int l, w, r, a, v, s; double x, y; double pi=acos(-1.0);//求圆周率 double vx, vy; while( cin>>l>>w>>x>>y>>r>>a>>v>>s ) { if( l==0 ) break; vy=sin( a*pi/180 )*v;//求纵向速度 vx=cos( a*pi/180 )*v;//求横向速度 t=0; while( t!=s ) { x+=vx; y+=vy; while( (x-r<0) || (x+r>l) || (y-r<0) || (y+r>w) ) { if( x-r<0 ) x=2*r-x, vx=-vx; if( x+r>l ) x=2*l-2*r-x, vx=-vx; if( y-r<0 ) y=2*r-y, vy =-vy; if( y+r>w ) y=2*w-2*r-y, vy =-vy; } t++; } printf("%.2f %.2f\n",x,y); } return 0; }