UVA 11880 (Ball in a Rectangle) 平面几何
2013-11-26 20:26
274 查看
题目链接:点击打开链接
题目大意:小球在矩形框内弹跳,速度不变,求最终的圆心坐标
题目分析:1.对边框进行处理,所以直接用圆心操作;
2.一开始以为是模拟,但是貌似很麻烦,仔细分析才发现是化曲为直的方法~利用取模
题目大意:小球在矩形框内弹跳,速度不变,求最终的圆心坐标
题目分析:1.对边框进行处理,所以直接用圆心操作;
2.一开始以为是模拟,但是貌似很麻烦,仔细分析才发现是化曲为直的方法~利用取模
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<math.h> #define eps 1e-8 #define pi acos(-1.0) //acos 为反余弦,cospi=-1 using namespace std; int sgn(double x) { return (x > eps) - (x < -eps); //符号函数,貌似c++中没有这个= =手写 } double solve(double x,double l) { if(sgn(x)<0) x = -x; if(sgn(x-l)>0) return 2*l-x; return x; } int main() { double l,w, x,y,r,a,s,v,v_x,v_y; while(1) { scanf("%lf %lf %lf %lf %lf %lf %lf %lf ",&l,&w,&x,&y,&r,&a,&v,&s); if(sgn(l+w+x+y+r+a+v+s)==0) break; l-=2*r; w-=2*r; a=a/180*pi; v_x=cos(a)*v; v_y=sin(a)*v; x=x-r+v_x*s; y=y-r+v_y*s; x=fmod(x,2*l); y=fmod(y,2*w);//才知道double也可以进行取模 x=solve(x,l); y=solve(y,w); printf("%.2lf %.2lf\n",x+r,y+r); } return 0; }
相关文章推荐
- UVA 11880 Ball in a Rectangle(数学+平面几何)
- UVA 11880 Ball in a Rectangle 几何
- UVA11880 Ball in a Rectangle
- UVA 11880 Ball in a Rectanglefds
- uva 11880 Ball in a Rectangle(计算几何)
- uva 1506 Largest Rectangle in a Histogram
- toj 4608 Ball in a Rectangle
- D - Ball in a Rectangle
- poj 2559 Largest Rectangle in a Histogram(DP二维超内存,用一维或者用结构体)
- [UVA][10173][Smallest Bounding Rectangle][旋转卡壳]
- POJ 2559 Largest Rectangle in a Histogram
- UVA - 10294 Arif in Dhaka (First Love Part 2) (Polya定理)
- LeetCode: Largest Rectangle in Histogram
- UVa1025 - A Spy in the Metro(DP)
- LeetCode: Largest Rectangle in Histogram
- 【leetcode】Array——Largest Rectangle in Histogram(84)
- 寻找直方图中的最大矩形 Largest Rectangle in Histogram
- LeetCode刷题笔录Largest Rectangle in Histogram
- hdu 1506 Largest Rectangle in a Histogram (最大子矩阵)
- UVA-11167 Monkeys in the Emei Mountain(区间模型最大流+输出方案)