4次元の点を描画
4次元の点の位置データファイルを読み込んで、それを回転し描画するプログラムです。4次元で奥にあるものほど黒く、そして線が下に伸びるようにして、手前のものほど白く、線は上に伸びるようにしました。回転は4次元(視点の回転)でも行なっていますが、3次元への投影は正射影なので単に4次元目の要素(以下w軸とする)を無視してるだけです。
例えばここに四次元の点[3, 4, 5, 6]があったとするとw軸の要素6を無視して、3次元の点[3, 4, 5]として処理してることになります。これだと、4次元の意味がないような感じがしますが、それ以前にwを含む面(wx平面、wy平面, wz平面)での回転を行なっているので4次元の影響は出ます。
具体的にはwx平面でθ回転した場合、回転の行列変換は
[x', y', z', w'] = [x, y, z, w] *
_ _
| cosθ 0 0 sinθ |
| 0 1 0 0 |
| 0 0 1 0 |
|_-sinθ 0 0 cosθ_|
となるので回転後のx座標x'は
x' = x*cosθ - w*sinθ
となって移動します。これはxz平面での回転(y軸回転)の
x' = x*cosθ - z*sinθ
とほぼ同じ、wかzかの違いだけです。
加えて今回は、面にテクスチャを張ってるわけでもなく、ドット単位の点や線で表示しているので、3次元の奥行き感がまったく出ません。なので、3次元で回転しても、4次元で回転しても、このプログラムではまったく同じように見えてしまうわけです。
しかしCAVEの場合は3次元の奥行き感を立体視で感じることができるので、少しはわかりやすくなると期待しているのですが・・・・・。どのみち大きさの変らない点や線はやめようとは考えてます。

