- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Snell's law指出入射角和折射角的正弦比等于给定 Material 折射率比的倒数:
我想实现一个简单的程序来可视化法律。自 , 和 是已知的,这是我计算的方式 :
theta2 = asin((sin(theta1) * n1) / n2);
问题是对于 的某些值和 (例如玻璃和空气分别为 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 度)。有没有更好的办法?
最佳答案
来自同一个Wikipedia page您链接的:
When light travels from a medium with a higher refractive index to one with a lower refractive index, Snell's law seems to require in some cases (whenever the angle of incidence is large enough) that the sine of the angle of refraction be greater than one. This of course is impossible, and the light in such cases is completely reflected by the boundary, a phenomenon known as total internal reflection.
所以,你做错了。如果您想避免处理 NaN,检查该值是否高于 1 是一件好事;但如果发生这种情况,请务必不要使用一些数学技巧来规避它!它具有精确的物理含义,必须保留该含义!
关于c++ - Snell 定律 — 如何处理 asin() 中的无效值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42011621/
一年多以来,我一直在阅读C++并用它编写小程序。最近我遇到了三巨头法则。我从来不知道这条法律。 无意中,我在这里找到了它:Rule of Three . 我可以知道 C++ 中的任何其他此类定律吗?
根据 Control.Arrow 文档,对于许多 monads(那些 >>= 操作是严格的)instance MonadFix m => ArrowLoop (Kleisli m)不满足 loop (
通常在 Haskell 中我们定义 Monad s 表示为 return和>>= 。有时分解也方便>>=进入fmap和join 。 Monad一旦您习惯了这两种公式的定律,它们是众所周知的并且相当直观
我正在阅读 James Iry's blog post在 Scala 中的 Monads 上。我在第三部分,我对他关于单元的单子(monad)第二定律的描述感到困惑。特别是这种说法: unit(x)
我见过提到 IO不满足单子(monad)定律,但我没有找到一个简单的例子来说明这一点。有人知道一个例子吗?谢谢。 编辑:如ertes和 n.m.指出,使用 seq有点非法,因为它可以使任何 monad
齐普夫定律是许多现实生活中的一种模式,齐普夫定律最常见的情况是在文本段落中,其中最常用的单词的数量是第二个最常用单词的两倍。 我一直在学习 Python 中的字典,并尝试自己做这件事,但对它们的一些方
这可能是一个幼稚的问题,但是 RSpec 的测试 DSL 是否违反了 Demeter 法则? 这是来自 http://rspec.info 的 RSpec DSL 示例: bowling.score.
Snell's law指出入射角和折射角的正弦比等于给定 Material 折射率比的倒数: 我想实现一个简单的程序来可视化法律。自 , 和 是已知的,这是我计算的方式 : theta2 = asin
嘿,我正在开发一个文本生成器,它应该可以生成数百万种不同的文本。为了使每篇文章的内容更真实,我使用了 Zipf 定律它运行良好,单词分布正确。 但是下面的 next() 函数执行得非常慢,因为我想生成
我正在使用一个工具来自动生成按层次结构组织的 XML 文件的类表示形式。 XML 文件是我的应用程序需要能够访问的设置文件(只读)。 如果我将顶级节点(例如,AppSettings)传递给需要访问一项
不使用形式推导,如何测试自定义的Monad实例是否遵循Monad定律? 最佳答案 FWIW,这是我最近编写的一组 QuickCheck 属性,用于测试从 F 代数派生的 Maybe 实现的 Monad
我是一名优秀的程序员,十分优秀!