読者です 読者をやめる 読者になる 読者になる

4次元から2次元への変換行列

数学

2次元の正方形から1つ次元を増やしたら3次元の立方体になります。
3次元の立方体から1つ次元を増やしたら4次元の超立方体になります。

今回は4次元超立方体を2次元ディスプレイに移す変換行列のお話です。

まずは3次元から2次元へ

例えば下記の絵は単なる線分の集まりですが、私達はこの絵を立方体として認識できます。
つまり3次元から2次元への変換に成功していると言えます。

この変換を行列で考えてみましょう。上の図の奥行き方向をz軸とすると
3次元座標( x, y, z )から2次元座標( x', y' )への変換行列は次のように書けます。
zの値が大きければx, yの値も大きくなるという単純な構造です。

\left(\begin{array}{c} x' \\ y' \\ \end{array} \right) = \left(\begin{array}{ccc} 1 & 0 & 0.5 \\ 0 & 1 & 0.5 \\ \end{array} \right) \left(\begin{array}{c} x \\ y \\ z \\ \end{array} \right)

続いて4次元から3次元へ

次元が1つ増えて4次元になっても同様に考えることができます。
4次元座標( x, y, z, w )から3次元座標( x', y', z' )への変換行列は
wの値が大きければx, y, zも大きくなるように表現すると下記のように書けます。

\left(\begin{array}{c} x' \\ y' \\ z' \\ \end{array} \right) = \left(\begin{array}{cccc} 1 & 0 & 0 & 0.5 \\ 0 & 1 & 0 & 0.5 \\ 0 & 0 & 1 & 0.5 \\ \end{array} \right) \left(\begin{array}{c} x \\ y \\ z \\ w \\ \end{array} \right)

最後に4次元から2次元へ

4次元座標( x, y, z, w )から2次元座標( x', y' )への変換行列は
上で書いた2つの行列を掛け合わせるだけです。

\left(\begin{array}{c} x' \\ y' \\ \end{array} \right) = \left(\begin{array}{ccc} 1 & 0 & 0.5 \\ 0 & 1 & 0.5 \\ \end{array} \right) \left(\begin{array}{cccc} 1 & 0 & 0 & 0.5 \\ 0 & 1 & 0 & 0.5 \\ 0 & 0 & 1 & 0.5 \\ \end{array} \right) \left(\begin{array}{c} x \\ y \\ z \\ w \\ \end{array} \right)
\hspace{32pt} = \left(\begin{array}{cccc} 1 & 0 & 0.5 & 0.75 \\ 0 & 1 & 0.5 & 0.75 \\ \end{array} \right) \left(\begin{array}{c} x \\ y \\ z \\ w \\ \end{array} \right)

図で確認

変換行列が分かったのでどんな4次元物体も2次元ディスプレイで表現できるようになりました。
実際にこの行列を使用して4次元超立方体を2次元に変換すると下記のようになります。

色々と潰れてしまっているので見づらいですが、確かに4次元から2次元への変換が出来ています。
変換手法は異なりますが、wikipediaにある4次元動画等も参考にして下さい。

プログラミングのための線形代数

プログラミングのための線形代数