UVA 12901 Refraction 折射 (物理)
一道物理题,解个2次方程就行了。。。
求h最小的情况对应如下图所示
做法不唯一,我想避免精度损失所以在化简的时候尽可能地去避免sqrt和浮点数乘除。
似乎精度要求很低,直接用角度算也可以
#include<cstdio>
#include<cmath> int main()
{
int T;
scanf("%d",&T);
while(T--){
int W,H,x,xe,ye;
double u;
scanf("%d%d%d%d%d%lf",&W,&H,&x,&xe,&ye,&u);
int Y = ye - H, X = xe - W;
int C = X*ye-Y*(xe-x);
int X2 = X*X, Y2 = Y*Y;
double lamda = (u*u)*(X2+Y2) - X2;
double a = (lamda - Y2)*X2;
double b = -*X*lamda*C;
double c = lamda*C*C;
double delta = b*b - *a*c;
if(delta>=){
double h = (sqrt(delta) - b)/(*a);
if(h>H) printf("Impossible\n");
else {
if(h < ) printf("0\n");
else printf("%.4lf\n",h);
}
}else {
printf("Impossible\n");
}
} return ;
}
UVA 12901 Refraction 折射 (物理)的更多相关文章
- UVA 12901 Refraction 几何/大雾题
Refraction Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.a ...
- UVA 12901 Refraction 数学
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83008#problem/E Description HINT 题意: 给你一个 ...
- UVA 10123 No Tipping (物理+贪心+DFS剪枝)
Problem A - No Tipping As Archimedes famously observed, if you put an object on a lever arm, it will ...
- CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction)
CSharpGL(43)环境映射(Environment Mapping)-天空盒(Skybox)反射(Reflection)和折射(Refraction) 开始 如图所示,本文围绕GLSL里的sam ...
- Step deep into GLSL
1 Lighting computation is handled in eye space(需要根据眼睛的位置来计算镜面发射值有多少进入眼睛), hence, when using GLSL (GP ...
- UVa 10868 (物理) Bungee Jumping
题意: 有个人在蹦极,给出悬崖的高度,绳子的长度,弹簧绳的胡克系数 以及 人的质量. 判断人是否能够着地,能的话是否能安全着地.所谓安全着地就是到达地面的速度不超过10m/s. 分析: 学过一点高中物 ...
- 折射向量计算(Refraction Vector Calculation)
上个月学习Peter Shirley-Ray Tracing in One Weekend的系列三本书,收获真的很多.这个系列的书真的是手把手教你如何从零开始构建一个光线跟踪渲染器,对新手(像我)非常 ...
- 紫书 习题 10-19 UVa 10868 (物理动能定理)
这道题看起来很长,而实际上就是考物理 可以用动能定理来算出末速度. 同时注意要特判绳子比桥还长的情况. #include<cstdio> #include<cmath> #de ...
- Unity3d BTDF实时折射模拟有粗糙度的半透明物体
折射的原理是运用BTDF的一个球形高斯近似 需要考虑折射光的来源,一般会想到用环境贴图(IBL)或者grab texture,但是折射光不全都来自一个平面,所以选择环境贴图来作为折射光.这个效果主要是 ...
随机推荐
- QMYSQL driver not loaded 的原理和解决办法
转:http://blog.csdn.net/m15814478834/article/details/49902077 最近使用Qt遇到了"QMYSQL driver not loaded ...
- cf808D(xjb)
题目链接:http://codeforces.com/problemset/problem/808/D 题意:问能不能通过交换不超过两个元素的位置使得原数组变成能分成前,后和相等的连续两部分: 注意这 ...
- RabbiMQ原理与SpringBoot使用
RabbiMQ介绍 具体代码可参考我的github:https://github.com/UniqueDong/springboot-study 一.使用场景 RabbitMQ是一个消息中间件,所以最 ...
- 升级了git版本后git clone报ssl错误的解决方法
由于升级了git版本,git clone 的时候报了如下的错误 fatal: unable to access 'https://github.com/open-falcon/falcon-plus. ...
- 关于表格——增加删除行,鼠标选定(利用JavaScript)
涉及到的知识点: 1.onmouseover,onmouseout 2.dom getElementByTagName 3.新建节点元素createElement; <!DOCTYPE html ...
- std::less
std::less 定义于头文件 <functional> template< class T >struct less; (C++14 前) template ...
- IOS在滚动的时候fixed消失
前段时间,除了apple发布了新的硬件之外,同步还发布了新的操作系统,IOS11,当大家都将注意力聚焦在那个奇怪的刘海该如何适配的时候,笔者的项目在适配IOS11却出现了其他的问题. 众所周知,I ...
- JQuery扩展和事件
一.jQuery事件 常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点( 搜索框例子) change([[data],fn]) 当select下拉 ...
- Codeforces 1165F2(二分内的check)
要点 二分答案,内部喜闻乐见的拖延策略:对于某个打折玩具,就选最晚的打折时间买,答案并不会变劣,只是购买时间的平移. 注意最晚时间不是预处理的东西,是二分内部的.在mid以内的最晚时间. #inclu ...
- 蓝桥校内选拔赛B题(不一定正确)
由于没报名,只能靠别人发的截图来做了 我的思路:全排列,判断加号位置,判断/位置,看是否存在这个相等的 时间复杂度较高,在10e8左右 代码: #include<cstdio> #incl ...