4次元図形を見てみよう、という話です。2002年冬のロボット技術研究会内の研究報告会で発表しました。
Javaアプレット版を作りました。ぐりぐり動きます。
ソースはこちら。FourDimApp.javaってのが本体です。別途、行列ライブラリJampackが必要です。Java 1.4.1とかで動くようです。
LHAで圧縮されています。+Lhacaなどで解凍してください。
FourDim.exeをダブルクリックして開き、[ロード]で4次元図形ファイル(*.4dm)をロードしてください。あとは、回転や移動のバーを色々いじってみてください。
上記ソフトに添付されている4次元図形の一覧です。
16hou2.4dm |
回してみないと、どんな図形だか分かりにくいと思います。ぜひ上のアプレットかソフトで見てください。
研究報告会の原稿(PDF)が有りますので、詳しくはそちらをどうぞ。
物理系では4次元というと空間3次元+時間になりますが、ここでは4次元目も単なる空間のもう1軸と考えます。そうした時、4次元の図形を表示するためにはどうすれば良いでしょう。人間は3次元の世界を2次元に投影して見ています。ならば、4次元の世界を3次元に投影し、それをさらに2次元に投影すれば4次元図形が見えるはずです。
3次元座標の平行移動、回転、拡大はAffine行列と呼ばれる4*4行列を掛ける事で表せます。また、3次元座標をある点から見た視野の2次元座標に変換するのも、同じような4*4行列の掛け算で可能です。これに倣って4次元座標の平行移動、回転、射影を表す5*5行列を作り、4次元から3次元への投射を実装しました。
Borland C++ Builder 6 Professionalを使いました。行列演算には、ポータブルテンプレート行列ライブラリ(PTM)を使いました。このライブラリはロボット技術研究会OBの長谷川さんが作ったものです。
アプレットはJavaSDKとEclipse、行列ライブラリJampackで作りました。