射影ベクトルと外積

久しぶりに「ゲームプログラミングのための3Dグラフィックス数学」から。ぶらぶらと本屋に行ったついでに、また立ち読みしてきました。○ュンク堂書店さん、本当に冷やかしばかりですみません...。
§
射影ベクトルと外積の計算は線形変換なので行列で表現できます。あらためて指摘されて別に驚くことでもないですが、内積外積が入り交じった行列計算を行う場合に便利です。例えば、外積を使って任意軸周りの回転行列を求める時など応用できます。

射影ベクトルの表現行列

ベクトルPからベクトルQへの射影ベクトルP'は
 \vec{P'} = \frac{\vec{P}\cdot\vec{Q}}{|\vec{Q}|^{2}} \vec{Q}
と求められます。これをPからP'への線形変換とみなすと、
 \vec{P'} = \frac{1}{|\vec{Q}|^{2}} \begin{pmatrix}  {Q_{x}}^{2} & Q_{x}Q_{y} & Q_{x}Q_{z} \\ Q_{x}Q_{y} & {Q_{y}}^{2} & Q_{y}Q){z} \\ Q_{x}Q_{z} & Q_{y}Q_{z} & {Q_{z}}^{2} \end{pmatrix} \begin{pmatrix}  P_{x} \\ P_{y} \\ P_{z}  \end{pmatrix}

外積の表現行列

ベクトルPとベクトルQの外積
 \vec{P}\times\vec{Q} = \begin{pmatrix} P_{y}Q_{z} - P_{z}Q_{y} \\ P_{z}Q_{x} - P_{x}Q_{z} \\ P_{x}Q_{y} - P_{y}Q_{x} \end{pmatrix}
ですが、これをベクトル・行列の積に分解すると、
 \vec{P}\times\vec{Q} = \begin{pmatrix}  0 & -P_{z} & P_{y} \\ P_{z} & 0 & -P_{x} \\ -P{y} & P_{x} & 0 \end{pmatrix} \begin{pmatrix}  Q_{x} \\ Q_{y} \\ Q_{z}  \end{pmatrix}

§
まだ本書を買ってもいない自分が言うのもなんですが、これは確かに良い本ですね。CGに必要な数学の知識が網羅されていると同時に説明も丁寧。分かりやすさは読者のレベルに応じて個人差があると思いますが、これからCGを学ぼうとする方にお勧めします。私も就職できた暁には(それはいつ?)、ぜひ購入してじっくり読んでみたいと思います。ところで、本書は第2版(原書)が出版されてから既に5年も経っていますが、第3版の予定はあるでしょうか?あの「Real-Time Rendering」は第3版がもうすぐ出るらしいですけど*1

Mathematics for 3d Game Programming and Computer Graphics (Game Development Series)

Mathematics for 3d Game Programming and Computer Graphics (Game Development Series)

*1:まだ出ていないと思ったのですが、既に7月末に発売されていますね。