- 虹の発生条件
雨上がり等で、空気中に水分が適度に含まれている時、太陽を背にして空を見上げると虹が見えることがあります。
- なぜ虹が見えるのか
空気中の水滴に、ある決まった角度で太陽光が差し込むと、内部で屈折・反射をして入射した方向と反対方向に出てきます。この光が目に届いて虹になります。
太陽光は様々な波長の光を含んでいますが、水滴中を太陽光が屈折するとき、光の波長によって微妙に屈折率が違うため、出てくる光の角度は波長ごとに微妙にずれが生じます。これが虹が七色に見える原因となります。(光の分散)
虹にはハッキリと見える主虹と、その外側にうっすらと見える副虹があります。主虹は、空の低い位置にある水滴に太陽光が上から入射した時に、水滴内部で光が1度反射して出てきた光です。副虹は、空の高い位置にある水滴に、太陽光が下から入射した場合に、水滴内部で光が2回反射して出てきた光です。副虹は2回反射をするため、出てくる光が主虹の場合よりも弱くなるため、主虹よりも薄く見えます。
下の図は、主虹・副虹それぞれの場合の、水滴内の光の軌道をシミュレートしたものです。(マウスで光源を動かして、反射・屈折の様子を確認できます)
水滴内部の光の軌道 ( 再生にはFlashPlayer10以降が必要です )
|
|
|
主虹の場合:光が上から差し込み、内部で1回反射して出てくる。
|
副虹の場合:光が下から差し込み、内部で2回反射して出てくる。
|
- 虹が見える角度
虹の見える位置は、太陽光と視線の角度によって決まっていて、主虹の場合は約42.5°、副虹の場合は約50.4°になります。
太陽の位置による虹の見え方の変化を確認するために、簡単なレイトレーシングで虹の形を再現するプログラムを作ってみました。太陽光の角度をスライダーで調整できます。また、左ドラッグでカメラを動かして見る事ができます。
虹の見える角度 ( 再生にはFlashPlayer10以降が必要です )
|
ď Koji Ohno, 2010/11/01 19:16
|
プログラムソースをダウンロードできるようにしました。
プログラムは、FlexSDK + FlashDeveloperで作成しています。
FlexSDKは今回はじめて触ったのでノウハウがなかった上、時間がないのでやっつけで作ってるので、ソースはあまり綺麗じゃありません。
Flash10のNative3D機能を使ってます。簡単に3Dっぽい事ができるけど、Zバッファが無いのでオブジェクトを自分でZソートしなきゃいけません。今回は単純なシーンなのでZソートはしてません。