3D-CG プログラマーのための クォータニオン入門[四訂版]
スリーディーシージープログラマーノタメノクォータニオンニュモン ヨンテイバン
なぜ注目されているか
書籍紹介
従来から、航空宇宙やロボット工学で使われてた「クォータニオン」 (四元数) は、「DirectX」や「OpenGL」など、パソコン用ソフトでもサポートされたため、ゲームなどへの応用が盛んになってきました。
ただ、「ベクトル」や「行列」とは違い、「クォータニオン」には、適当な参考書がなく、プログラマーは手探りでプログラミングしていました。
本書は、3D-CG プログラマーを対象に、数学、プログラミング (C++) の両面からクォータニオンを解説し、好評を博しました。
今回の「四訂版」では、「関数型プログラミング」など、「数学」と「プログラミング」言語が、最近ますます近づいたことについて解説します。
■実数・複素数・クォータニオンー数
実数の性質
複素数の性質
クォータニオンの性質
■行列ーもうひとつの数
連立線形方程式と行列
行列の性質
直交行列とユニタリ行列
■行列による 2 次元の回転と内積
2 次元ベクトル
内積
2 次元ベクトルの回転
■複素数による 2 次元の回転
位置を表わす複素数
複素数による回転
複素数=対角行列+反対称行列
■行列による 3 次元の回転と外積
3 次元ベクトル
外積
3 次元ベクトルの回転
■クォータニオンによる 3 次元の回転
位置を表わすクォータニオン
クォータニオンによる回転
クォータニオン=対角行列+反エルミート行列
■テンソルとスピノール
テンソル
スピノール
テンソル=スピノール×スピノール
■付録・補講
クォータニオンを利用した視点移動
サンプルプログラムの実行方法
本書のダイジェスト
「群・環・体」と「クォータニオン」
リー代数
束
技書の森解説
クォータニオン (四元数) は、実部 1 つと虚部 3 つからなる数で、3 次元の回転を表すのに使われます。『3D-CG プログラマーのための クォータニオン入門[四訂版]』 (金谷 一朗 著、工学社、2022 年 11 月 25 日発売) は、I/O BOOKS の一冊として出た解説書で、実数と複素数の性質、行列、ベクトルの回転を順に扱い、クォータニオンによる 3 次元の回転を経てテンソルとスピノールまでを全 7 章と付録、補講で解説します。版元の副題は、ベクトル、行列、テンソル、スピノールの関係が分かることを掲げています。
回転を表す行列、複素数、クォータニオン
平面の回転は、2 行 2 列の直交行列を掛けても、絶対値 1 の複素数を掛けても表せます。空間の回転は 3 行 3 列の直交行列で表せるほか、絶対値 1 のクォータニオンで点を挟んで掛ける形でも表せます。クォータニオンは 4 つの数で回転を持てるため、9 つの数を持つ行列より値が少なく、2 つの姿勢の間を滑らかに補間する計算にも使われます。回転を 3 つの角度の組で表す方法 (オイラー角) では、軸が重なって自由度が 1 つ失われるジンバルロックが起きますが、クォータニオンによる表現ではこの問題が起きません。本書の第 3 章から第 6 章は、この回転を「行列による 2 次元の回転と内積」「複素数による 2 次元の回転」「行列による 3 次元の回転と外積」「クォータニオンによる 3 次元の回転」の順に表し直す並びです。
全 7 章の構成、数の性質からテンソルとスピノールまで
第 1 章「実数・複素数・クォータニオン―数」は実数、複素数、クォータニオンの性質を、第 2 章「行列―もうひとつの数」は連立線形方程式と行列、行列の性質、直交行列とユニタリ行列を扱います。第 4 章には「複素数=対角行列+反対称行列」、第 6 章には「クォータニオン=対角行列+反エルミート行列」という節があり、複素数とクォータニオンを行列の形で書き直す対応が章をまたいで置かれています。第 7 章「テンソルとスピノール」は、テンソル、スピノール、「テンソル=スピノール×スピノール」の 3 節です。付録はクォータニオンを利用した視点移動とサンプルプログラムの実行方法、補講は本書のダイジェスト、群 / 環 / 体とクォータニオン、リー代数、束を扱います。NDL の書誌にはダウンロードのサンプル・プログラム、文献、索引の注記があります。
四訂版で加わった関数型プログラミングの解説
版元は四訂版について、関数型プログラミングなどを例に、数学とプログラミング言語が近づいたことについて解説すると案内しています。関数型プログラミング は、副作用を避け、関数の組み合わせで処理を組み立てる書き方で、写像や合成という数学の語でプログラムの動きを説明できます。楽天ブックスの書誌の紹介文は、本書が 3D-CG プログラマーを対象に、数学とプログラミング (C++) の両面からクォータニオンを解説してきたと案内しています。
3D-CG とゲームの回転処理を書く読者に
版元の紹介文は、クォータニオンが DirectX や OpenGL などのパソコン用ソフトでもサポートされたため、ゲームなどへの応用が盛んになってきたと述べています。ゲーム開発 や 3D-CG で、カメラや物体の向きを扱うプログラムを書く人が、同じ回転を行列、複素数、クォータニオンで表し直す章の並びに沿って、視点移動の付録、群 / 環 / 体とリー代数の補講までたどれる構成です。目次に、特定のゲームエンジンやグラフィックスライブラリの使い方を扱う章はありません。
関連記事
技術書の読書ノート術 - 付箋 / マーカー / デジタルの使い分け
技術書を読むときのノートの取り方を比較します。付箋派、マーカー派、デジタルノート派、それぞれの長所と短所を実体験をもとに紹介します。
foo, bar, Alice, Bob はどこから来たのか - 技術書のサンプル名の由来
技術書やコード例でおなじみの foo, bar, Alice, Bob。これらの名前にはそれぞれ歴史的な由来があります。知っていると少し楽しくなる雑学を紹介します。
ソフトウェア開発の歴史を変えた 5 冊の技術書
アルゴリズムの学問化からコードの可読性革命まで、ソフトウェア開発の方向性を決定づけた 5 冊の技術書を、時代背景とエピソードとともに紹介します。