みなさん、はじめまして。技術本部 開発技術部のYです。
ひさびさの技術ブログ記事ですが、タイトルからお察しの通り、今回は数学のお話です。
#数学かよ って思った方、ごめんなさい(苦笑)
数学の勉強会
弊社では昨年、有志による隔週での数学の勉強会を行いました。ご多分に漏れず、コロナ禍の影響で会議室に集合しての勉強会は中断、再開の目処も立たず諸々の事情により残念ながら中止となり、用意した資料の配布および各自の自学ということになりました。
勉強会の内容は、高校数学の超駆け足での復習から始めて、主に大学初年度で学ぶ線形代数の基礎の学び直し 、および応用としての3次元回転の表現の基礎の理解といった感じです。
「線形代数」とは、微積分と並び理工系の科学・技術の諸分野で基礎中の基礎として用いられる数学の分野で、ゲームでは主に3DCGの技術的基礎として応用されています。昨今のAIブームでも一時期話題になりました。 タイトルにある「クォータニオン」とは、日本語では「四元数」と訳され、ゲームではキャラや背景などを3次元回転させるときに応用されるもので、勉強会の中では最後に出てくるラスボスであり少し難しい数学の概念です。
勉強会の趣旨は、この「クォータニオン」を数学的にきちんと理解することを えさ ゴールとして、そのために(実際はそれだけでなくさまざまな技術の基礎となっている)「線形代数」の基礎をきちんと学び直そうということでした。
なぜ数学?
ゲーム開発においても分業化・専業化の流れは著しく、ゲームアプリケーション(みなさんに遊んで頂いているゲームそのもの)を開発する際、いわゆるゲームエンジンや各種ライブラリを用いるのが当たり前になっています。これらエンジンやライブラリは、ゲーム開発者にさまざまな機能を提供し効率よく開発できるようにすることが役割であり、極端な話、三角関数を全く知らなくても3Dゲームを作れる時代になっています。 しかしながら例えばゲーム固有の表現のためにシェーダー(画面を描画する機能)をカスタマイズしたい場合や、当然のことながらエンジンやライブラリそのものの開発者は、ある程度のさまざまな数学の知識が必要となります。技術的に高度なことをしようと思うとなおさら深い理解が必要です。
このように数学や物理学は、ゲーム業界のみならず理工系のさまざまな分野で、科学者・技術者を根元から支える基礎となり重要な武器となっています。
資料を公開します
今回、この勉強会用に用意した資料「基礎線形代数講座:線形代数 回転の表現」を一般に公開いたします。全8講、本文が全部で140ページのPDFで、各講は以下のような標題です。
- 第1講 イントロダクション
- 第2講 初等関数
- 第3講 ベクトル
- 第4講 行列 I:連立一次方程式
- 第5講 行列 II:線形変換
- 第6講 行列 III:固有値・対角化
- 第7講 回転の表現 I
- 第8講 回転の表現 II
線形代数 基礎の本質的な部分をできるだけ簡潔に分かりやすく学べるように全体を組み立ててみました。各項目を学ぶ順番や手法、一部は定義すら一般的なものと違う(例:行列式)こともあります 。いわゆる「大人の学び直し」ではあるのですが、内容はガチの数学となっています。 記事の最後に公開先へのリンクを張っておきますので、興味のある方は参考にして頂ければと思います。
特に学生の方で、この資料で線形代数を学んでみようと思われた奇特な方がいらっしゃれば、言うまでもないことですが読んだ後改めて講義で指定されている教科書を読んでみましょう。きっとこれまで以上に理解が深まることと思います。
この記事では、その中から「クォータニオン」の導入部分である、第8講の第2節までをそのまま引用します。導入部なので内容は平易となっていますが、複素数・行列・三角関数に関するある程度の知識がないと理解は難しいと思われます。ぜひ紙と鉛筆を用意して、ご自身でも図や式を書いたり計算したりしながら、じっくり読んでみてください。
基礎線形代数講座からの引用
【8-1】はじめに
本講では、4種の3次元回転の表現の最後としてクォータニオンについて学ぶ。クォータニオンは日本語では四元数(しげんすう)と訳されるもので、1843年にハミルトンにより発見された複素数を拡張した代数体系であり、3次元の回転の表現としても多くの利点を備えている。
その性質から特に計算機を用いる場合にも他の表現手法に比べ優位な点が多く、近年 宇宙機を始め、3DCGやCV、ロボット工学等々さまざまな分野で応用されている。一方で他の表現手法に比べるとやや抽象的でその本質(4次元空間に埋め込まれた3次元回転)が捉えづらい面も否めない。本講では、拡張の元になった大きさ1の複素数の積による複素平面内での回転の復習から始め、ハミルトンによる発見に至るまでの過程*1をたどる事でクォータニオンを導入し、その性質を分かりやすく解説する。
●おさらい
任意の複素数
これの本質は、
【8-2】クォータニオンの導入:ハミルトン劇場
[8-2-1] 拡張複素数で複素( 3次元)空間を回したい
ハミルトンは複素数を拡張して、虚数単位
「独立な異なる虚数単位
おさらい*2:2行 2列の行列
ここでさらに別の行列 例えば
以下、ハミルトンがクォータニオンを発見するまでの過程*3をたどってみよう。
ハミルトン:
でも
とりあえず
(ちなみに後に別の数学者により、このような
[8-2-2] 4次元? マジか 4次元??
ある日運河のほとりを歩いている時(実話*5)にひらめいた: もう一つ虚数単位を導入して
回転面は
●
お、
角度
確かに
つまりこういうこと |
---|
|
●
およ。さっきの
角度
ん、これも別々に回っている。
●残り
これも角度
●とりあえず分かったこと
虚数単位
つまりこうなって欲しい |
---|
|
●そういえば非可換だった*7
非可換なので、右から掛けたらどうなる?
右から
なんと
右から
これなら、左から
●というわけで
左から
最後は倍角の公式を使った。これで
めでたしめでたし。2倍回るけどw
こうなった |
---|
|
・・・ハミルトン劇場 終
このあと第8講は
- 【8-3】クォータニオン:定義と諸性質
- 【8-4】クォータニオン:3次元回転の表現
- 【8-5】 [▼]付録 1:一般的な4次元の回転について
- 【8-6】付録2:成分表示における4次元内積の不変性について
- 【8-7】 [▼A]付録 3:オイラーの公式と代数的補間式 について
と続きます・・・。
公開先
「基礎線形代数講座」は、開発技術部の技術資料一般公開先でもある、SlideShare サイトにて公開しています。
セガでは共に技術力を高め合い研鑽していていける方を募集しています。 興味がある方は下記サイトにアクセスして下さい。