四次元への扉へ戻る  

 四次元球面と地図

● 三次元球面と地図

 我々は地球、つまり三次元の球の表面に住んでいるから、球の表面を分かりやすく表示するのは切実な問題である。
 世界地図は必ずどこかが歪んでいる。つまり、球面をユークリッド平面に歪み無く展開するのは不可能である。だからといって、世界地図はやみくもに描かれてはいない。
 人間の生活上、東西南北は普遍的である。つまり、赤道や北極は他の地点よりも地図上の価値が高い、ということになる。だから、地球上の点は(x,y,z)の三次元直交座標ではなく、緯度と経度の極座標で表すと便利である。赤道は緯度が0度で、北極は北緯90度である。赤道の任意の点を経度0度と決めれば、他の任意の地点が経度と緯度で示せるし、うっかり地中深くとか宇宙空間を指し示すこともないであろう。言うまでも無く、経線(子午線)は南北の線であり、緯線は東西の線である。
 地図も緯度や経度の線がどのように描かれるかで、目的にあった表示かどうかが、かなり判断できる。

 三次元空間の極座標は、
  x = R * sin(th1) * sin(th2)
  y = R * sin(th1) * cos(th2)
  z = R * cos(th1)
 で表される。*は掛け算を表し、Rは中心からの距離つまり半径を表す。sinとcosは三角関数である。
 th1は緯度で、th2は経度に相当する。であるから、通常はth1は0度から180度(半周)、th2は-180度から+180度(一周)と、多少不公平になっている。
 もっとも、数字的にはth1が-180度から+180度、th2が0度から180度としても、間違っている、とまではいえない。たとえて言うと、北緯と南緯を90度までではなく、極点を越えて180度まで認めてしまうと、東経か西経のどちらかしか必要としない。そんな表示はあまり役立たないが…。

 蛇足だが、宇宙から地球を見るとほぼ真球だが、計測ではわずかに歪んでいるそうであるし、海溝や山脈などの多少のでこぼこはある。それでも緯度と経度による表現は十分に役立つ。

● 四次元球面と地図

 四次元図形を正しく表すためには、製図の技法を用いるのが通例である。建築物や機械を技術者はたくみに図面上に表現する。地図の図法では正射影に相当するから、表と裏は同時には見えない(簡単な図形では裏の稜線を破線で示すこともある)。

 三次元の正多面体や半正多面体は、いわゆる凸図形であり、中心からパノラマすると、すべてを見渡すことができる。
 本稿で話題にしている四次元図形も、そのほとんどは凸図形であるから、外接球などに投影すれば地図の技法で総覧が可能になると予想される。
 ただし、球面に投影した時点で一回目の歪が生じてしまう。さらに四次元球面を三次元ユークリッド空間に展開する時点で、地図の図法による二回目の歪が生じる。
 三次元で言えば、正八面体も立方体も、まず球面に膨らんで、ボールのようになる。そこから、メルカトル図法とかモルワイデ図法などで平面に展開する。とはいえ、角度の保持は重要であるので、等角写像の一種の平射図法を最初に試すことになろう。

 ちなみに、三次元空間に展開した「地図」で身近なものに、色空間の表示がある。色は赤・緑・青の混合で表しても、色相・明度・彩度で表しても三次元になる。学校の美術室などでマンセルの色立体とかオストワルドの色立体とかを見た方もいるだろう。

 緯度と経度に相当する四次元対象物を同定するために、四次元の極座標表現を調べてみた。
 四次元ユークリッド空間内の点は、習慣的に、
  (x, y, z, u)
 と、第四のu座標を付け加えて表現する。
  x = R * sin(th1) * sin(th2) * sin(th3)
  y = R * sin(th1) * sin(th2) * cos(th3)
  z = R * sin(th1) * cos(th2)
  u = R * cos(th1)
 とすると、Rは半径の長さであり、th1はu座標と半径のなす角度、th2はz座標と半径のなす角度、th3はy座標と半径のなす角度である、とのことである。th3は経度に相当し、th2は緯度に相当する。th1には名前が無いみたいで、仮に超緯度と呼ぶことにしよう。
 th3のみが-180度から+180度の一周で、th2とth1は0度から180度の半周を指定する。とはいえ、このままでは三次元人の我々には直感が働かない。

 そこで、地図投影法の出番である。
 四次元球面を平射図法(ステレオ図法)で三次元ユークリッド空間に展開しよう。平射図法は簡単で、かつ強力であるので、標準的な展開方法として後々まで役立つはずである。
 半径1の四次元単位球を考える。数式で書くと、
  x2 + y2 + z2 + u2 = 1
 回転は後で考慮するとして、まずは最初の表示を考えよう。超北極(0, 0, 0, 1)を三次元空間の原点に表示したい。そのためには、超南極(0, 0, 0, -1)と超球面上の点を直線で結び、超赤道面(x, y, z, 0)との交点に写像する。超南極自身は無限遠点に後退してしまう。計算上は、
 (1) 前準備として、ある点の座標(x, y, z, u)を、原点との距離 d = sqrt(x2 + y2 + z2 + u2)で割って単位球面上に乗せる。新座標は、(x/d, y/d, z/d, u/d)となる。(sqrt()は正の平方根、/は割り算を表す)
 (2) u座標を一単位上に移動させる、(x/d, y/d, z/d, u/d + 1)。超南極が原点に来た。
 (3) 最初の三要素を得られたu座標で割る。U = u/d + 1と置くと、
    X = x/d/U  Y = y/d/U  Z = z/d/U
 こうして得られた(X, Y, Z)を三次元図法で素直に表示すればよい。

● 四次元空間での回転操作

 早くプログラミングしたい人のために、四次元空間での回転操作を紹介する。私が今作ろうとしているプログラムも、上記の表示と、ここで述べる回転操作を組み合わせたものである。ちなみに、お手軽にVisualBASICのLineメソッドで経度・緯度・超緯度を描かせてみたのだが、線が重なってしまって訳が分からない(何となくは分かったが)。まじめに3D表示しないと他人には見せられないと思う。

 三次元の回転は、各座標軸を中心として3種を考えると、すべての回転が得られる。
  (x, y * cos(th) - z * sin(th), y * sin(th) + z * cos(th))  x軸中心の回転
  (x * cos(th) - z * sin(th), y, x * sin(th) + z * cos(th))  y軸中心の回転
  (x * cos(th) - y * sin(th), x * sin(th) + y * cos(th), z)  z軸中心の回転
 本来なら、変換行列を見ると分かりやすい。行列を知っている方は3×3の変換行列に書き換えると分かりやすいだろう。

 四次元の回転は、平面が回転の中心になる。座標軸は4つあるから、4C2 = 6通りの回転が必要となる。
  (x * cos(th) - y * sin(th), x * sin(th) + y * cos(th), z, u)  xy平面上の回転 (zu平面を軸とする回転)
  (x * cos(th) - z * sin(th), y, x * sin(th) + z * cos(th), u)  xz平面上の回転 (yu平面を軸とする回転)
  (x * cos(th) - u * sin(th), y, z, x * sin(th) + u * cos(th))  xu平面上の回転 (yz平面を軸とする回転)
  (x, y * cos(th) - z * sin(th), y * sin(th) + z * cos(th), u)  yz平面上の回転 (xu平面を軸とする回転)
  (x, y * cos(th) - u * sin(th), z, y * sin(th) + u * cos(th))  yu平面上の回転 (xz平面を軸とする回転)
  (x, y, z * cos(th) - u * sin(th), z * sin(th) + u * cos(th))  zu平面上の回転 (xy平面を軸とする回転)
 これも、4×4の変換行列を書くと一目瞭然である。

 これらの回転を上述の四次元平射図法で見ると、きっと面白い表示になると思う。予想では、1, 2, 4番目のu座標が不変な回転では、展開後の三次元空間でも三軸を中心の素直な回転になる。3, 5, 6番目のu座標値を巻き込んだ回転は単位円を中心として回り込んで絞り出すような表示になるだろう。

2002年9月6日 岡田好一