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

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