以下のテキストで学習中、計算に詰まったので、計算過程を記録しておく。
- 画像情報教育振興協会 「コンピュータグラフィックス [改訂新版]」
1. 問題サンプル
- フォンのモデルを用いて、鏡面反射光の強さを求める。
- 以下の値を用いて計算する。
- $W(\alpha)=0.8$
- $I_i=10$
- $N=(0,1,0)$
- $L=(-1,2,0)$
- $V=(2,1,0)$
- $n=2$
2. 利用する数式
2-1. フォンのモデル
鏡面反射光の強さは以下のように表される。
テキスト p.148
\begin{align}
I &= W(\alpha)I_icos^n\gamma \\
&= W(\alpha)I_i(\hat R \cdot \hat V)^n \\
\end{align}
2-2. 正反射方向ベクトルの計算
テキスト p.150~151
\begin{align}
R &= V^{\prime} + 2 \hat N \\
V^{\prime} &= - \frac{\hat V}{|\hat V \cdot \hat N|} \\
\hat R &= \frac{R}{\|R\|} = |\hat V \cdot \hat N|R
\end{align}
鏡面反射光の計算のために p.151 の正反射方向ベクトルの計算式を利用したい。この場合、 $V = L$ として計算することになるので、式は以下のようになる。
\begin{align}
R &= L^{\prime} + 2 \hat N ・・・①\\
L^{\prime} &= - \frac{\hat L}{|\hat L \cdot \hat N|}\\
\hat R &= \frac{R}{\|R\|} = |\hat L \cdot \hat N|R ・・・②
\end{align}
解法
これに、各種値を当てはめる。
1. L の単位ベクトル, N の単位ベクトルの計算
まず、 $\hat L, \hat N $を求める。
\begin{align}
\hat L &= \frac{L}{|L|} = \frac{(-1,2,0)}{\sqrt{(-1)^2+2^2+0^2}} \\
&= \frac{(-1,2,0)}{\sqrt{5}} = \left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) \\
\\
\hat N &= \frac{N}{|N|} = \frac{(0,1,0)}{\sqrt{0^2+1^2+0^2}} \\
&= \frac{(0,1,0)}{\sqrt{1}} = (0,1,0) \\
\\
\end{align}
2. R の計算
①より
\begin{align}
R &= L^{\prime} + 2 \hat N \\
&= - \frac{\hat L}{|\hat L \cdot \hat N|} + 2 \hat N \\
&= - \frac{\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) }{|\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) \cdot (0,1,0) |} + 2 \hat N\\
&= - \frac{\left(\frac{-1}{\sqrt{5}},\frac{2}{\sqrt{5}},0 \right) }{|\left(0,\frac{2}{\sqrt{5}},0\right)|} + 2 (0,1,0)\\
&= - \left(\frac{-1}{2},1,0 \right) + (0,2,0)\\
&= \left(\frac{1}{2},-1,0 \right) + (0,2,0)\\
&= \left(\frac{1}{2},1,0 \right)\\
\end{align}
3. R の単位ベクトルの計算
②より
\begin{align}
\hat R &= \frac{\left(\frac{1}{2},1,0 \right)}{|R|}\\
&= \frac{\left(\frac{1}{2},1,0 \right)}{\sqrt\frac{5}{4}}\\
&= \left(\frac{1}{\sqrt 5},\frac{2}{\sqrt 5},0 \right)\\
\end{align}
4. V の単位ベクトルの計算
$V=(2,1,0)$ より、
$\hat V = \frac{(2,1,0)}{\sqrt{2^2+1^2+0^2}} = (\frac{2}{\sqrt{5}},\frac{1}{\sqrt{5}},0)$
5. 鏡面反射光の計算
ここまでに求めた値を、鏡面反射光の強さのに式(フォンのモデル)に当てはめると、
\begin{align}
I &= W(\alpha)I_icos^n\gamma \\
&= W(\alpha)I_i(\hat R \cdot \hat V)^n \\
&= 0.8 * 10 * \left(\left(\frac{1}{\sqrt 5},\frac{2}{\sqrt 5},0 \right) \cdot \left(\frac{2}{\sqrt 5},\frac{1}{\sqrt 5},0 \right) \right)^2 \\
&= 8 * \left(\frac{4}{5} \right)^2 = 5.12\\
\end{align}
できたぽよ!((φ(>ω<*)