c语言坐标如何判定碰撞,台球碰撞 (C语言代码)

题目分析

具体看代码吧

代码#include

#include

int main()

{

double L,W,x,y,R,a,v,s;

double dx,dy;

while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&L,&W,&x,&y,&R,&a,&v,&s)&&(L+W+x+y+R+a+v+s))

{

x-=R;    // 把台球看成一个点

y-=R;

L-=2*R;

W-=2*R;

a*=acos(0.0)/90.0;   // 把弧度数转化为角度数

// dx为x轴方向上的分量

dx=fmod(fmod(s*v*cos(a),2*L)+2*L,2*L);  //fmod函数 后面说

// dy为y轴方向上的分量

dy=fmod(fmod(s*v*sin(a),2*W)+2*W,2*W);

if(x+dx<=L)      //画个图就差不多 就两个方向上下 左右

x+=dx;

else if(x+dx<=2*L)

x=L-(x+dx-L);

else

x=x+dx-2*L;

if(y+dy<=W)

y+=dy;

else if(y+dy<=2*W)

y=W-(y+dy-W);

else

y=y+dy-2*W;

printf("%.2f %.2f\n",x+R,y+R);

}

return 0;

}

fmod() 用来对浮点数进行取模(求余),其原型为:

double fmod (double x);

QAQ我下回写教程再也不去买西瓜了。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值