ロボット技術研究会 > C++研究室 > 4次元図形の表示


4次元図形の表示


4次元図形を見てみよう、という話です。2002年冬のロボット技術研究会内の研究報告会で発表しました。

アプレット

Javaアプレット版を作りました。ぐりぐり動きます。

ソースはこちら。FourDimApp.javaってのが本体です。別途、行列ライブラリJampackが必要です。Java 1.4.1とかで動くようです。

ダウンロード

4次元図形表示ソフト Ver.1.0

LHAで圧縮されています。+Lhacaなどで解凍してください。
FourDim.exeをダブルクリックして開き、[ロード]で4次元図形ファイル(*.4dm)をロードしてください。あとは、回転や移動のバーを色々いじってみてください。

4次元図形一覧

上記ソフトに添付されている4次元図形の一覧です。

図形名 ファイル名 説明
正8胞体 8hou.4dm 立方体8個が互いに全ての面を接する図形です。正方形→立方体→正8胞体 という感じです。 画像
正5胞体 5hou.4dm 正4面体5個が互いに全ての面を接する図形です。正3角形→正4面体→正5胞体 という感じです。 画像
正16胞体 16hou.4dm
16hou2.4dm
正4面体16個が互いに全ての面を接する図形です。正8胞体の頂点を1個飛ばしで結んでいくとできます。 画像

回してみないと、どんな図形だか分かりにくいと思います。ぜひ上のアプレットかソフトで見てください。

やっている事

研究報告会の原稿(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で作りました。


4次元図形の表示 < C++研究室 < ロボット技術研究会