先来看一张效果图。
下面的亮彩虹被称为“主彩虹”。 上面的薄彩虹被称为“副彩虹”。
据说,中间的黑暗部分被称为“亚历山大的暗带”。
副彩虹较暗,从红色到紫色的颜色排序与主彩虹相反。
首先,我们来看看彩虹的基本原则。
彩虹是由空气中的水滴折射和反射引起的。
水滴漂浮在空气中。当太阳光进入水滴时,不同的波长就会向不同的方向折射。
每个折射波长的光在水滴内部进行镜面反射后进入空气中。
当你看到彩虹时,你观察了进入空气中的光。
如果以非序列重现此行为,则如下图所示。
用以模拟阳光的光源放置在左上角。光源的光谱设置为黑体辐射光谱。黑体辐射温度设置为 6000 开尔文,就像太阳一样。
波长指定 100 波长,介于 0.4um 和 0.7um 之间。
右侧的圆形(球形)对象表示水滴。光线几乎透过水滴。但是,当光线的一部分进入水滴内部并产生菲涅尔反射时,(反射率 2%),会从水滴的底部射出。这创造了主彩虹及其下方的明亮区域。
部分进入水滴内部的光线在水滴中发生两次反射后射出。
由于水滴内部的反射率为 2%,因此两次反射的光与反射一次的光相比,能量比较弱,只有2%。
模拟结果如下。
到这里彩虹的仿真就结束了。接下来我们给彩虹加上一个蓝天的背景。这个有多种实现方式。这里·我们选择给仿真蓝天的物体设置反射率。
由于短波长侧的反射率较高,因此颜色为蓝色。
* 这种反射率与实际空气的散射特性不同。 这里取巧设置。更加精确的仿真可以参考这一篇:
How to simulate atmospheric scattering using a Mie model – Knowledgebase (zemax.com)
光线追迹可以获取以下结果: