[プログラムの理論の説明]
 このプログラムでは、陰影づけモデルにphongのモデルを使用している。
 鏡面反射光の強さを以下の式で求めている。ここで、厳密には鏡面反射率は光の波長によってことなるが、本プログラムでは、一定値Wとしている。
 

(1)
 S:鏡面反射光の強さ、Ii:入射光の強さ、W:鏡面反射率
 n:ハイライトの特性を示す
 r(gamma):光源の反射ベクトルと視線ベクトルのなす角。

 また、拡散、鏡面反射、透過の3要素を考慮した場合の光の強さを、次式で計算している。
 
(2)
 I:視点に入射する光の強さ
 kd:拡散反射率、a(alpha):入射角
 kt:透過率(W+kt=1)、T:屈折方向からの光
 
図1
図1: フォングの反射モデル

 そして、反射方向、屈折方向の計算は次のようになる。 Nは面の単位法線ベクトル、Lは光の入射方向ベクトル、Sは鏡面反射光、Tは屈折方向からの光、は鏡面反射率、は透過率()である。

図2
図2:面反射と屈折の方向

 図2に示すように、反射光ベクトルをR、屈折光の方向を示すベクトルをP、 視線方向をVとすると、RとPは次式によって求まる。
(3)

 ここで、ただし、nは屈折率である。

   JAVAのアプレットに戻る
   プログラムの使用方法に戻る