LoginSignup
0
0

法線ベクトルを逆行列の転置行列で変換することについて

Last updated at Posted at 2023-06-10

法線ベクトルの変換

3Dオブジェクトを扱うときは、オブジェクトの回転・変換に合わせてその法線も適切に変換しなければならないときがあります。
オブジェクトを行列$A$で変換を行う場合、法線$\boldsymbol{n}$ について、 $^t(A^{-1})\boldsymbol{n}$ を変換後の法線ベクトルとして扱えば良いことになりますが、なぜこれで変換後の法線ベクトルが求められるのか示しました。

補題

※ベクトル $\boldsymbol{a}$ と $\boldsymbol{b}$ の内積を $(\boldsymbol{a}, \boldsymbol{b})$で表すとする。
$A$ が $(m,n)$ 型の実行列ならば、任意の $n$ 項列ベクトル $\boldsymbol{x}$ および $m$ 項列ベクトル $\boldsymbol{y}$ について

\begin{align}
(A\boldsymbol{x}, \boldsymbol{y}) = (\boldsymbol{x}, ^tA\boldsymbol{y})
\end{align}

が成り立つ。

補題の証明

証明は、斎藤線形代数入門のp63 [6.3]、定理(転置行列の基本的な性質2)などを参照。

本題の証明

$A$ を正則行列、$\boldsymbol{n}$ を法線ベクトル、$\boldsymbol{p}$ を任意のベクトルとする。
このとき補題より以下が成り立つ。

\begin{align}
(\boldsymbol{n}, \boldsymbol{p}) = (\boldsymbol{n}, A^{-1}A\boldsymbol{p}) = (^t(A^{-1})\boldsymbol{n}, A\boldsymbol{p})
\end{align}

$ (\boldsymbol{n}, \boldsymbol{p})=0$ のとき、$(^t(A^{-1})\boldsymbol{n}, A\boldsymbol{p})=0$ だから、$^t(A^{-1})\boldsymbol{n}$ は変換後のオブジェクトに対応する法線ベクトルになっている。
また、

\begin{align}
(\boldsymbol{n}, \boldsymbol{n}) = (^t(A^{-1})\boldsymbol{n}, A\boldsymbol{n}) > 0
\end{align}

内積が>0だから、$^t(A^{-1})\boldsymbol{n}$は$A\boldsymbol{n}$と同じ側を向く法線ベクトルになっている。

参考

特異値分解による説明

具体的な計算

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0