mirage


私信TA

用户名:mirage915

访问量:308

签 名:

撸的不是代码,是头发!

排  名 1299
经  验 608
参赛次数 1
文章发表 8
年  龄 0
在职情况
学  校
专  业

  自我简介:

解题思路:


化为质点忽略半径,利用对称解决反弹

注意事项:


a=a*asin(1)/90//把角度转化为弧度( 没有用这个公式因为精度问题错了两遍o(╥﹏╥)o  )


参考代码:


#include<stdio.h>
#include<math.h>
main()
{
	double L,W,R,a,v,s,x,y;
	while(~scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&L,&W,&x,&y,&R,&a,&v,&s) && L!=0)//只需判断一个 L!=0 即可。 
	{
		L-=2*R;     W-=2*R;//长宽减去 2R 
		x-=R;       y-=R;// X,Y 减去 R,这样就可以把球看成质点运动。 
		x+=v*cos(a*asin(1)/90)*s;     y+=v*sin(a*asin(1)/90)*s;//速度分解为X,Y方向 * 时间 
		while(x<0 || x>L)// X 超出边界 
		{
			if(x>L) x=2*L-x;//X关于L对称 
			if(x<0) x=-x;// X 关于 0 对称 
		}
		while(y<0 || y>W)// Y 同上  
		{
			if(y>W) y=2*W-y;
			if(y<0) y=-y;
		}
		printf("%.2lf %.2lf\n",x+R,y+R);// 原坐标加回 R , 系统会自动四舍五入 
	}
 }


  评论区