◆ polyhedの開発史、その2
Sondeの表示例
● Sonde 変形一様多面体の探索
対称一様多面体はシュワルツ三角の頂点、辺の対角二等分点、内心に頂点を定め、三角の折り返しによって描出できます。どのシュワルツ三角を用いるか、注目すべき点がどれかは、「多面体の模型」に載っています。これら内心などの座標は簡単に計算できます。ですから、「多面体の模型」に誤植が無いか、他の可能性はどうなのかは容易に分かるはずです。
ところが、変形一様多面体の頂点座標は簡単には計算できません。まずもって、44種のシュワルツ三角の中で、変形一様多面体の頂点を持つものは(正二十面体と大二十面体を含めても)13種しかありません。
まずはVertex/Vortexの項で述べた余剰の正三角形、つまり変形面あるいは変形三角形と呼ばれる図形が構成できるかどうかが問題です。シュワルツ三角内に点を取り、その点の各辺に対する鏡像が正三角形になっていないといけません。この変形三角形に対応する点を、以下で正三角点と呼ぶことにします。
Vertex/Vortexに限界を感じ始めたころ、正三角点を見つけ出すための、ごく簡単なプログラムを作りました。3つの辺に対する鏡像点を結ぶ線分は3本できます。ある2つの線分の長さを比較し、大小に応じて赤と黒で画面上にプロットします。「2つの線分」は3組取れますから、赤に続いて緑、青で彩色します。赤と緑が重なれば、加色して黄色にします。他も同様に加色します。出来上がりの図の一例を上図に示します。正三角点には三原色が集合しているはずです。
最初のプログラムはドットマトリクスプリンタで白黒の濃淡表示だったのですが、図の印象は同じです。非常にきれいな色分けと感じたので、このプログラムには名前を付け、Sonde(探索子)と呼ぶことにしました。polyhedでは「捩れ」を指定したときに地図ウィンドウに現れる図形です。上図は球面から平面への投影に心射図法を用いていますが、オリジナルは平射図法です。
これを見ると、どのシュワルツ三角に正三角点があるかどうかが分かります。これは必要条件で、正三角点があるからといって変形一様多面体になるかどうかは分かりません。もちろんSonde図上の点を指定して立体を描けは良いのですが、再び立体表示の壁に突き当たってしまいました。
● polyhed 動くSonde
その後、機会をうかがっていましたが、結局OpenGL(計算機による設計のための三次元表示システム)の普及を待つことになってしまいました。それにしても、Windows
NTでOpenGLがいつでも使えるようになり、自分でもOpenGLを研究したのにもかかわらず、つい最近までpolyhedのアイデアが湧きませんでした。いまさらに考えると、いつでも実現可能と思ったので、気が抜けてしまったのだと思います。
今回、OpenGLの加速が効くノートパソコンを手に入れ「59の二十面体」の開発でOpenGLが結構使えると思ったのと、なぜか一瞬暇を感じたのがpolyhedの開発につながったと思います。
polyhedの最初の目標は、「元ネタについて」で少し述べたように、Sondeの表示の上でマウスをドラッグすると、立体が連続して変形するプログラムでした。しかし、よく考えてみたらSondeが表示しているのは球面なので、立体化すればカーソルを固定して地図の方を動かすことができそうです。なにしろ、上に掲げたSondeの図を作成するには数秒がどうしてもかかるので、視点を移動するにつれ、地図がリアルタイムに、まるでヒッチコックの映画の画像のように不思議に変形するのは何とも愉快そうな気がしました(平射、心射図法にて)。
polyhedのmapウィンドウが、非常にしつこい作りに見えるのは錯覚ではなく、本当の主人公はmapで、立体の表示はできて当たり前の付け足し、というのが本来の位置づけなのです。その結果、肝心の立体表示はバージョン1.3に至ってやっと完成したように見える、という醜態を演じてしまいました。
● Sonde図形の不思議
Sondeは平射図法で出発しました。角度が保存されるのと、球面全体が見渡せるからです。polyhedではできないのですが、付録のsonde.exeが動作する環境の方は、左上のコンボボックスの「300
2/1:3/1:3/1」という文字列を直接書き換えて、「300 2/1:2/1:2/1」「300 2/1:2/1:3/1」「300
2/1:2/1:4/1」…、と角柱列の角度を入力して「Go!」をクリックしてみてください。色の境界が変化する様子が分かります。Rの値を120から60などに小さくすると、視野が拡大され、周辺の様子が分かります。
いつの日か忘れましたが、この奇妙な曲線の変化に勘が働いたらしく、心射図法で見てみる気になりました(上図)。その結果はびっくりさせられるもので、楕円や双曲線らしきものが現れます。うまく位置決めすると、円が表示されます。円が表示される位置は、辺の対角二等分点を心射図法の中心に持ってきた場合です。つまり、色の境界は球面と楕円錐の交わりでした。円はシュワルツ三角の辺とは垂直に交わっており、その先は三角の頂点に伸びてゆきます。いろんなシュワルツ三角で試してみると、いろいろ個々の事情があることが分かります。円錐の反対側が関係していたり、円が無限大になってしまって直交する大円になったりです。
私の数学能力では、このどう見ても円に見える図形が円であることを証明できません。もし円であったら、今まで数値計算で近似的にしか算出できないとされていた変形一様多面体の頂点座標が解析的に解けるかもしれないと思っています。
2002年8月1日 岡田好一