解题思路:
首先用高中物理知识,把运动看成两个运动,一个是水平一个是竖直,
我就分析水平的吧,竖直的复制粘贴水平的。
注意事项:如果你真想弄懂就点一点看,不能着急
参考代码:
#include<stdio.h>
#include<math.h>
#define pi 3.1415926535897932
#define vx (v*cos(a*pi/180.0))
#define vy (v*sin(a*pi/180.0))
int main ()
{
int j=0,k=0,n=1;
double i=0;
double X[50],Y[50],l,w,x,y,r,a,v,s;
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&l,&w,&x,&y,&r,&a,&v,&s);
while(l!=0||w!=0||x!=0||y!=0||r!=0||a!=0||v!=0||s!=0)
{
if((int)vx<0){
i=-vx*s;
i+=l-x;
}
else{
i=vx*s;
i+=x;
}
n=1;
while(i>(l-2*r)){
n++;
i-=(l-r*2);
}
if((int)vx>=0){
if(n%2==0)
X[j]=l-i;
else
X[j]=i;
}
else
{
if(n%2==0)
X[j]=i;
else
X[j]=l-i;
}
//竖直向下
if((int)vy<0){
i=-vy*s;
i+=w-y;
}
else{
i=vy*s;
i+=y;
}
n=1;
while(i>(w-2*r)){
n++;
i-=(w-r*2);
}
if((int)vy>=0){
if(n%2==0)
Y[j++]=w-i;
else
Y[j++]=i;
}
else
{
if(n%2==0)
Y[j++]=i;
else
Y[j++]=w-i;
}
scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&l,&w,&x,&y,&r,&a,&v,&s);
}
for(k=0;k<j;k++)
printf("%.2f %.2f\n",X[k],Y[k]);
}
0.0分
1 人评分