斯内尔定律指出,入射角和折射角的正弦比等于给定材料折射率之比的倒数:
我想实现一个简单的程序来可视化法律.以来 ,
和
众所周知,这是我的计算方法
:
theta2 = asin((sin(theta1) * n1) / n2);
Run Code Online (Sandbox Code Playgroud)
问题是对于某些值 和
(例如分别为玻璃和空气的1.52和1.0),
(sin(theta1) * n1) / n2对于较大的角度,结果可以大于1.0,这使得asin返回NaN.我应对这种情况的方法是检查是否(sin(theta1) * n1) / n2大于1.0,如果是这种情况,首先从中减去1,计算使用新值,然后添加
0.5 * M_PI(或90.0度).有没有更好的办法?
| 归档时间: |
|
| 查看次数: |
346 次 |
| 最近记录: |