台球碰撞

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
描述

在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形。有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内)。受撞击后,球沿极角为a的射线(即:x正半轴逆时针旋转到此射线的角度为a)飞出,每次碰到球桌时均发生完全弹性碰撞(球的速率不变,反射角等于入射角)。

如果球的速率为vs个时间单位之后球心在什么地方?

输入
输入文件最多包含25组测试数据,每个数据仅一行,包含8个正整数L,W,x,y,R,a,v,s(100<=L,W<=10^5, 1<=R<=5, R<=x<=L-R, R<=y<=W-R, 0<=a<360, 1<=v,s<=10^5),含义见题目描述。L=W=x=y=R=a=v=s=0表示输入结束,你的程序不应当处理这一行。
输出
对于每组数据,输出仅一行,包含两个实数x, y,表明球心坐标为(x,y)。x和y应四舍五入保留两位小数。
样例输入
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
思路:首先把台球看做一个点,然后将速度沿x轴,y轴分解,分别求出x轴方向上,和y轴方向上的位移,最后确定台球位置(x+R,y+R)
      怎么看都像是在做物理题,物理不好的童鞋也加油喽!
AC码:
#include<stdio.h>
#include<math.h>
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);// 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);elsex=x+dx-2*L;if(y+dy<=W)y+=dy;else if(y+dy<=2*W)y=W-(y+dy-W);elsey=y+dy-2*W;printf("%.2f %.2f\n",x+R,y+R);}return 0;
}

NYOJ 665 台球碰撞相关推荐

  1. 【算法修炼】台球碰撞 C

    台球碰撞 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形.有一个球心在(x,y),半径为R的 ...

  2. 题目 1075: 台球碰撞

    样例输入 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 ...

  3. 椭圆台球桌中台球碰撞模拟

    题目:椭圆台球桌中台球碰撞模拟 内容: 掌握二维光线跟踪方法: 功能要求: (1)构建一张椭圆形台球桌: (2)使用鼠标指定椭圆内的一个随机起点S和方向c: (3)台球从S点出发,沿方向c按直线前进, ...

  4. 完全碰撞问题 台球碰撞

    问题描述 在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形.有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内).受撞击后,球沿极角为a的射线(即: ...

  5. 基于Seajs的可控台球碰撞游戏

    前言 不记得哪个黑色星期五,贪吃鱼基本完工的时候,产品突然增加需求,要求金币扔出去后不消失,互相可碰撞,其最终结果还要由服务器控制(没错,至今做的所有游戏都有幕后黑手,=W=). 对于碰撞以前只写过一 ...

  6. 编程习题练习记录--台球碰撞

    在平面直角坐标系下,台球桌是一个左下角在(0,0),右上角在(L,W)的矩形.有一个球心在(x,y),半径为R的圆形母球放在台球桌上(整个球都在台球桌内).受撞击后,球沿极角为a的射线(即:x正半轴逆 ...

  7. C语言网 蓝桥杯训练 1075 台球碰撞

    样例输入 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 ...

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

    题目分析 具体看代码吧 代码#include #include int main() { double L,W,x,y,R,a,v,s; double dx,dy; while(scanf(" ...

  9. java 编写台球代码_台球碰撞 (Java代码)

    解题思路: 注意事项: 参考代码:import java.util.Scanner; public class C1075 { public static void main(String[] arg ...

最新文章

  1. Java面试官:给Java面试者的八点建议
  2. PESCMS Ticket 客服工单系统 v1.2.5 发布
  3. 微信也在用的Transformer加速推理工具 | 腾讯第100个对外开源项目
  4. JDK Executor执行器的应用
  5. Swift - 05 - 数值型字面量
  6. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  7. 论文中图片加方框 matlab代码
  8. 省选专练SCOI2015小凸想跑步
  9. 电脑桌面运维工程师考证
  10. Modbus通讯协议学习文档
  11. redis 无法启动
  12. 想要把邮件转换成PDF?整起!
  13. 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)
  14. 给iOS开发者的Sketch入门教程
  15. php微信签名_PHP微信接口签名算法
  16. 前端环境安装遇到的问题
  17. linux恢复安卓数据,安卓数据恢复2 - ranfs的个人空间 - OSCHINA - 中文开源技术交流社区...
  18. thinkphp+vue水果购物商城网站
  19. SEED-XDS560v2 驱动
  20. labview控制 西门子S7-1200 1214 dcdcdcplc 程序

热门文章

  1. JavaScript数组去重算法实例
  2. SQL ALTER TABLE 语句
  3. [转]详解Oracle高级分组函数(ROLLUP, CUBE, GROUPING SETS)
  4. 类与类之间调用Computer-CPU-Mouse--看懂它看懂类之间的调用
  5. puppet结构图一例
  6. 安全观之我见(三):省银之道在预防
  7. 字节对齐和C/C++函数调用方式学习总结(多篇节选)
  8. If you are confused about the future
  9. 贪便宜买了减价香蕉之后
  10. 剑桥大学国际学生事务部网站