Home‎ > ‎

虹の発生原理とシミュレーション



  • 虹の発生条件

     雨上がり等で、空気中に水分が適度に含まれている時、太陽を背にして空を見上げると虹が見えることがあります。
  • なぜ虹が見えるのか

     空気中の水滴に、ある決まった角度で太陽光が差し込むと、内部で屈折・反射をして入射した方向と反対方向に出てきます。この光が目に届いて虹になります。

     太陽光は様々な波長の光を含んでいますが、水滴中を太陽光が屈折するとき、光の波長によって微妙に屈折率が違うため、出てくる光の角度は波長ごとに微妙にずれが生じます。これが虹が七色に見える原因となります。(光の分散)

     虹にはハッキリと見える主虹と、その外側にうっすらと見える副虹があります。主虹は、空の低い位置にある水滴に太陽光が上から入射した時に、水滴内部で光が1度反射して出てきた光です。副虹は、空の高い位置にある水滴に、太陽光が下から入射した場合に、水滴内部で光が2回反射して出てきた光です。副虹は2回反射をするため、出てくる光が主虹の場合よりも弱くなるため、主虹よりも薄く見えます。

     下の図は、主虹・副虹それぞれの場合の、水滴内の光の軌道をシミュレートしたものです。(マウスで光源を動かして、反射・屈折の様子を確認できます)
水滴内部の光の軌道 ( 再生にはFlashPlayer10以降が必要です )


 主虹の場合:光が上から差し込み、内部で1回反射して出てくる。
副虹の場合:光が下から差し込み、内部で2回反射して出てくる。 

  • 虹が見える角度

     虹の見える位置は、太陽光と視線の角度によって決まっていて、主虹の場合は約42.5°、副虹の場合は約50.4°になります。

     太陽の位置による虹の見え方の変化を確認するために、簡単なレイトレーシングで虹の形を再現するプログラムを作ってみました。太陽光の角度をスライダーで調整できます。また、左ドラッグでカメラを動かして見る事ができます。
虹の見える角度 ( 再生にはFlashPlayer10以降が必要です )


Č
ċ
ď
rainbow.zip
(14k)
Koji Ohno,
2010/11/01 19:16

コメント

Koji Ohno - 2010/11/01 19:26

プログラムソースをダウンロードできるようにしました。
プログラムは、FlexSDK + FlashDeveloperで作成しています。

FlexSDKは今回はじめて触ったのでノウハウがなかった上、時間がないのでやっつけで作ってるので、ソースはあまり綺麗じゃありません。

Flash10のNative3D機能を使ってます。簡単に3Dっぽい事ができるけど、Zバッファが無いのでオブジェクトを自分でZソートしなきゃいけません。今回は単純なシーンなのでZソートはしてません。