[プログラムの理論の説明]
このプログラムでは、陰影づけモデルにphongのモデルを使用している。
鏡面反射光の強さを以下の式で求めている。ここで、厳密には鏡面反射率は光の波長によってことなるが、本プログラムでは、一定値Wとしている。
(1)
S:鏡面反射光の強さ、Ii:入射光の強さ、W:鏡面反射率
n:ハイライトの特性を示す
r(gamma):光源の反射ベクトルと視線ベクトルのなす角。
また、拡散、鏡面反射、透過の3要素を考慮した場合の光の強さを、次式で計算している。
(2)
I:視点に入射する光の強さ
kd:拡散反射率、a(alpha):入射角
kt:透過率(W+kt=1)、T:屈折方向からの光
図1: フォングの反射モデル
そして、反射方向、屈折方向の計算は次のようになる。
Nは面の単位法線ベクトル、Lは光の入射方向ベクトル、Sは鏡面反射光、Tは屈折方向からの光、
は鏡面反射率、
は透過率(
)である。

図2:面反射と屈折の方向
図2に示すように、反射光ベクトルをR、屈折光の方向を示すベクトルをP、 視線方向をVとすると、RとPは次式によって求まる。
(3)
ここで、
ただし、nは屈折率である。
JAVAのアプレットに戻る
プログラムの使用方法に戻る