記事上部の画像および記事一覧に表示される画像は、以下でライセンスされています。
© 2011 Evan-Amos (Public domain)

ゲームの中に、虚数あり!


要点チェック!
  • 虚数は、座標上の点や図形を回転させることができます。
  • 超虚数(クォータニオン)を使えば、立体を回転させることもできます。
  • この超虚数は、ゲームのグラフィックにも利用されています。

学校で「2乗したら-1になる想像上の数」として、虚数iというのを勉強しました。けど、こんなこと考えて何の意味があるんでしょう?

実際には存在しないのに何で勉強する必要があるのかなって・・・

虚数をやる意味・・・か。誰もが気になるところだろうね。

ぽんさん、僕が説明しますよ!これでも理系で数学Ⅲをやってるし、たまには先輩として後輩の役に立たねば!

おっ、ゆうが説明してくれるのか!これは期待だなー

虚数を使ったものとして、「複素数平面」というのがあるんだ。

・・・「複素数平面」? はじめて聞きました!

「複素数平面」は、実軸をx軸、虚軸をy軸に取るんだ。

実軸、虚軸・・・?なんだかすごそうですね・・・

はるかがいまいちピンときてないみたいだから補足しとくと、「複素数平面」というのは、複素数を(実部)+(虚部)と表したときに、実部の数字をx軸に、虚部の数字をy軸にとるんだ。


複素数平面

複素数z=x+yiについて、実部のxと虚数のyを座標として表したものを複素数平面という。

たとえば、複素数zとしてz=1+iの座標を取ると、こんなふうになる。


なるほど!雰囲気はわかりました~。

それで、z=x+yiという複素数の式の形は、極形式というものに変形できます。

極形式・・・?

うん。 z=r(\cos\theta+i\sin\theta)という形なんだ。

rは複素数平面上に複素数を表現した点と原点との距離、\thetaはその点と原点を結んだ線と、x軸のなす角の角度だね。


複素数平面と極形式

複素数zz=r(\cos\theta+i\sin\theta)とも書けて、この形を極形式という。
ここで、rはzを複素数平面上の点として表したとき、原点とその点との距離、\thetaはその点と原点を結んだ線がx軸となす角になる(偏角ともいう)。

さっきのz=1+iの例で考えてようか。


これだと、r=\sqrt2,\theta=45^\circで、z=\sqrt2(\cos45^\circ+i\sin45^\circ)
と変形できる。

たしかに、計算してみると1+iになります!

ぽんさん、ありがとうございます。

それで、この極形式を利用すると、点の回転を考えることができるんだよ!

点の・・・回転・・・なんだかすごそうですね!

たとえば、さっきのz=1+iに、虚数iを掛け算してみたizはどう書ける?

iz=i+i^2=-1+i
ですね!

そうそう!それで、この-1+iを極形式にしてみるよ。

極形式に直すと、iz=\sqrt2(\cos135^\circ+i\sin135^\circ)
になる。

zizで、角度\thetaはどう変わった?

もとのzでは45°だったけど、iを掛けたら、135°になったので、90°だけ角度が変わりました!

うん!それで、虚数iを極形式にすると、i=\cos90^\circ+i\sin90^\circと書けて、ほら90°が顔を出してる!

おぉー!

図にしてみようか。


極形式に出てくる角度のことを偏角って言うんだけど、偏角がα、βの複素数を掛け合わせた複素数の偏角はα+βになって、複素数の掛け算は回転を表していたというわけさ。

さっきだと45°の複素数(1+i)に、90°の複素数(i)を掛け算したら、135°の複素数(-1+i)ができたということですね!

そうなんだよ。

さすがだな、ゆう!よく知っている。

ちょっとまとめてみるかな。


複素数平面と回転

極形式で表したときの偏角がαの複素数と偏角がβの複素数を掛け合わせると偏角がα+βの複素数ができて、回転が表現できる!
(ちなみに同じようにして点の平行移動なども考えられる。)


3次元の回転と超複素数

たしかに、複素数平面というのを考えると、複素数で回転が表現できるというのはわかったんですけど・・・

回転が表現できると何か良いことでもあるんでしょうか?

えっと・・・

点の回転が表現できるということは図形も回転させたりすることができるんじゃないかな。図形だって点の集まりなんだし・・・。

図形も回転できる・・それはそうかもしれないですけど・・・

図形が回転できると何ができるんですか?

ぽ、ぽんさん・・・何か知っていませんか?

そうだな・・・。これでも理系大学生をやってるし、先輩として後輩の役に立たねばな!

おお!

さすがはぽんさんですね!

複素数平面の回転がどう役に立つか。それはひとまず置いといて、話題を変えよう。

複素数平面(ガウス平面といったりもする)上で点の回転が表現できるというのはさっきやったとおりだ。

じゃあ平面という2次元じゃなくて、空間、つまり俺たちが住んでいるこの3次元上での点の回転を複素数で表現できないかと19世紀頃一部の数学者や物理学者は模索し始めた。

2次元で回転ができるんだから、3次元も何かあるはず・・・そう考えたわけですね?

そういうわけだ。イメージとしてはこんな感じ。


3次元上で回転を表現すること自体はそもそも複素数がなくても可能なんだ。
君たちは習ってないが、俺や、ちょっと前高校生だった人たちが勉強した、「行列」というもので表現できる。 あとベクトルでも、高校の段階では習わないんだが、ベクトルの内積と「外積」というのを両方使えば回転を表現できる。

ちなみに、さっきまで「複素数を使った」2次元の回転をゆうが説明していたけど、実は「行列」で回転は表現できるんだ。虚数も使わない。

えっ!!

じゃあ複素数平面って考える必要なかったんじゃ・・・

いやいや、そうでもないよ。複素数平面で回転を考えたほうが、計算としては圧倒的に楽だし、わかりやすいんだ。

3次元で回転を考えるにしても、行列で表現すると、複雑な操作もできるんだが計算が面倒でわかりにくくなり、ベクトルだとわかりやすいんだが複雑な操作ができないんだ。

だから2次元で楽だった複素数の道をあたってみたと・・・

まあそういう事情もあったのかもね。

そういうわけで、複素数を使って3次元の回転を表現しようと考え続けたんだが、そのままではどうしても無理だった。

しかし、思わぬ方法でついに3次元上の回転を複素数で表現することに成功する。虚数単位iだけでなく、さらに要素を増やした「超複素数」によって実現したんだ。

ちょ、超複素数・・・。

なんだかかっこいいですね

そうだろー笑

超複素数は、文字通り複素数を超えた複素数だ。

高校で習う複素数では、2乗して-1になる数として虚数単位iが決められている。逆に言えば、iだけだ。-iもあるけど。

しかし、超複素数は、iだけじゃないんだ。超複素数は2乗して-1になる数をi,j,kと3つも決めた。その上で、それぞれの関係を決めた。その条件を満たすものを四元数(しげんすう)という。クォータニオンとも呼ばれるね。

2乗して-1になる数が、3つも・・・

もうわけがわからないですね・・・

クォータニオンに深入りするのはやめとくけど、こいつを使って3次元上での回転を表すことに成功したんだ。

複素数じゃなくて、「超複素数」によって回転が実現できたわけですね。


しかも、クォータニオンを使った回転は、わかりやすいし、計算も簡単、複雑な操作もできるということで使い勝手が良かった。そういうわけでクォータニオンは名声を得たんだ。

実用性が高く評価されたクォータニオンは、空間の座標を表す際、ベクトルとどっちがいいか物理学者の中で論争があったほどだ。結局はベクトルを使うことに決まったんだけどね。

複素数平面を使うか、それとも通常のxy平面を使うかどっちがいいのか議論になった・・・みたいな感じですか?

そうそうそんな感じ!回転ばかり話してるけど、複素数の性質は電流だったり、振動だったりで物理学では結構重宝されてるらしい。

そうなんですねー

・・・3次元上でも回転を考えられたり、物理のすごい学者さんたちにとって、虚数やクォータニオンは便利だってことはわかりました。でも・・・

まだ、もやもやする?

はい・・・なんだか申し訳なくなってきましたけど・・・やっぱり何の役に立つのかなって・・・

いやいや、そう思うのは自然なことだよ、疑問の気持ちは大事にしないとね。無理になくすのはもったいない。

ぽんさん、何かとっておきの話ないんですか?はるかの言うとおり、回転って何の役に立つんだろうって僕も思っちゃった。

うん。

3次元上で点を回転できると何ができるか。

点が回転できるということは、図形も回転できる。つまり立体も回転させることが可能だ。

やはりそうでしたか。でもそれがいったいどんな風に使われるんでしょう・・・

2次元の場合、図形というか「モノ」はどこから見ても同じだ。けれど、俺たちが住んでる3次元では、どこから見るかで立体、つまり「モノ」の見え方もかわる。

視点が変われば見え方も変わるわけだ。視点が回転した場合はモノが回転してると言っても良いだろう。

ううん・・・?ぽんさん、なにやら難しいことを言いますね・・・?

ゆうはゲームはするのかな?

しますね!最近はGT・・・

おっとそれ以上はいいよ笑 俺たちが住んでいる、3次元を舞台にしたゲームはたくさんあるけど、そういったゲームの操作には「回転」にあたるものが必ずあるはずだ。

あ!確かにカメラ操作とかありますね!視点をまわしたり、回転をする場面は確かにあります!

図にすると、こんな感じかな


なるほど。確かに「モノが回転している」とも見えますね。

モノ、というかゲームの場合は3D-CGか。ゲームでCGを動かすのに複素数が役に立つというわけなんだ。

ゲーム機の中で、「モノ」にあたるCGを動かす計算をクォータニオンを使ってする。いわゆる「処理落ち」や「フリーズ」はゲーム機の計算が手間取っているんだ。

だから、虚数がなかったら、ゲームはフリーズしてばっかりだったかもしれない。

なるほど。納得できました!

私はあまりゲームをしないのでゆう先輩みたいに実感はなかなかできないですけど、でも役に立つのはわかりました。

ぽんさん、ありがとうございました。

役に立てたらよかったよ。

まとめてみると、こんな感じか。


超複素数と3次元の回転

3次元上で点を回転させる方法は3通りある。
他の2つの方法と違い、複素数を進化させた超複素数による回転は、計算上便利で、複雑な操作も可能。
点を回転させることで、3次元の立体を回転させることもできる。3次元の立体を回転させる方法は、3D-CGの技術に応用できる。
この技術は、ゲームのグラフィックを表現するのに役立っている。

複素数の良さを実感するためにも、私もゲームしてみようかな・・・。ゆう先輩、面白いゲームがあったら教えてください!

うん!じゃあGT・・・

おいおい笑 勉強もしっかりね!じゃあね~

3
もっと楽しい数学のお話あります!

コメントは停止中です。

このコンテンツは、数学を楽しく理解してもらうことを目的としているため、数学の持つ厳密性を欠いたり、本来の用語の意味を拡大解釈して利用しているものがあります。よって、「厳密性がない」「その定義はおかしい」などといったご指摘やコメントはご遠慮ください。