機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

屈折ベクトル

スネルの法則

入射角 \theta_{\bf L} と透過角 \theta_{\bf T} の間には次の関係式が成り立ちます。

\begin{eqnarray}
\eta_{\bf L}\sin\theta_{\bf L}=\eta_{\bf T}\sin\theta_{\bf T}\tag{1}
\end{eqnarray}

ここで、\eta_{\bf L} は透過前の媒質の屈折率、\eta_{\bf T} は透過後の媒質の屈折率です。

屈折ベクトル

単位法線ベクトル \bf N、光源へ向かう単位方向ベクトルを \bf L とします。
透過光が進む方向ベクトルを \bf T とします。
\bf T を法線ベクトルに対する平行成分と垂直成分で表すことを考えます。

法線ベクトルに対する \bf T の平行成分は -\bf N\cos\theta_{\bf T} で与えられます。
{\rm perp}_{\bf N}{\bf L} に平行な単位ベクトルを \bf G とします。

\begin{eqnarray}
{\bf G}=\frac{{\rm perp}_{\bf N}{\bf L}}{||{\rm perp}_{\bf N}{\bf L}||}=\frac{{\rm perp}_{\bf N}{\bf L}}{\sin\theta_{\bf L}}=\frac{{\bf L}-({\bf N}\cdot{\bf L}){\bf N}}{\sin\theta_{\bf L}}\tag{2}
\end{eqnarray}

法線ベクトルに対する \bf T の垂直成分は -\bf G\sin\theta_{\bf T} で与えられます。 
以上より、\bf T は以下のように書けます。

\begin{eqnarray}
{\bf T}&=&-{\bf N}\cos\theta_{\bf T}-{\bf G}\sin\theta_{\bf T}\\
&=&-{\bf N}\cos\theta_{\bf T}-\frac{\sin\theta_{\bf T}}{\sin\theta_{\bf L}}\left({\bf L}-({\bf N}\cdot{\bf L}){\bf N}\right)\tag{3}
\end{eqnarray}

(1) を使って、式 (3) を変形します。

\begin{eqnarray}
{\bf T}&=&-{\bf N}\cos\theta_{\bf T}-\frac{\eta_{\bf L}}{\eta_{\bf T}}\left({\bf L}-({\bf N}\cdot{\bf L}){\bf N}\right)\tag{4}
\end{eqnarray}

さらに、\cos\theta_{\bf T}=\sqrt{1-\sin^2\theta_{\bf T}} と式 (1) を使って、式 (4) を変形します。

\begin{eqnarray}
{\bf T}&=&-{\bf N}\sqrt{1-\frac{\eta_{\bf L}^2}{\eta_{\bf T}^2}\sin^2\theta_{\bf L}}-\frac{\eta_{\bf L}}{\eta_{\bf T}}\left({\bf L}-({\bf N}\cdot{\bf L}){\bf N}\right)\tag{5}
\end{eqnarray}

最後に \sin^2\theta_{\bf L}=1-\cos^2\theta_{\bf L}=1-({\bf N}\cdot{\bf L})^2 で置き換えます。

\begin{eqnarray}
{\bf T}&=&\left(\frac{\eta_{\bf L}}{\eta_{\bf T}}{\bf N}\cdot{\bf L}-\sqrt{1-\frac{\eta_{\bf L}^2}{\eta_{\bf T}^2}\left(1-({\bf N}\cdot{\bf L})^2\right)}\right){\bf N}-\frac{\eta_{\bf L}}{\eta_{\bf T}}{\bf L}\tag{6}
\end{eqnarray}

(6) が有効なのは、\sin\theta_{\bf L} < \dfrac{\eta_{\bf T}}{\eta_{\bf L}} を満たすときだけです。
根号内が負の時は、内部全反射という現象が起こります。
内部全反射の時は、こちらと同じ現象が発生し、全て反射されます。

参考リンク

反射ベクトル

参考文献

ゲームプログラミングのための3Dグラフィックス数学 p126-p128

目次へ戻る