如何绘制彩虹?

计算科学 计算物理学 软件
2021-12-21 14:01:43

我正在尝试编写一个可以模拟彩虹的程序。到目前为止,我已经弄清楚了如何确定取决于波长的折射率变化、取决于水滴内部反射次数的散射光线的角度偏差等等。我唯一不确定的是如何使用这些信息绘制彩虹。我正在考虑使用诸如散射光线角度的正弦和余弦之类的东西,但是我不知道是什么决定了天空中彩虹的半径。欢迎任何帮助。

请记住,我对编程和整体光学有简单的了解(物理学学士学位)。

3个回答

那么我不知道是什么决定了天空中彩虹的半径

彩虹的角半径只取决于雨水的折射率。无论您身在何处,主弓始终约为 42° ,副弓始终约为 51° 半径的确切值取决于光的频率。

彩虹的中心与太阳相对。

此外,不要忘记太阳本身的角直径约为 0.5°,这会导致彩虹模糊半度。

这18个中的任何一个都可以接受吗?

在此处输入图像描述

30 行代码由Fabrice Neyret 在 Shadertoy 上编写

彩虹形成一个圆弧,它是圆的一部分。看彩虹时,如果你面对彩虹的中心,太阳就在你的背后。一束穿过你头顶的阳光射到圆的中心。与那束平行的其他光束进入雨中并反射回您的眼睛。对于每种颜色,都有一个特定的反射角度可以增强反射。该角度通常是在入射平行光线和反射回您眼睛的光线之间计算的,它决定了观察到的圆的角度大小。(做一个侧视图草图。)圆圈的实际大小将取决于你到雨的距离。