[an error occurred while processing this directive]

自作フリーウェア制作の意図

幼き日々の想い出……

紙を切って多面体をつくったことがありますか? 雑誌の付録についていたすごろくのサイコロなど、ごく簡単な形の多面体ならほとんど人が作ったことがあるのではないでしょうか? でも、少しややこしい形になると、ほとんどの人がつくったことがないかもしれません。あるいは折り紙などでつくったことがあるかもしれません。

私はアルキメデスの立体は全種類、小学生のころに紙を切って作ったことがあります。アルキメデス立体の双対図形についても、そのほとんどを作ったことがあります。これらをつくるには展開図を書くのも大変ですし、なにしろすごい枚数なので貼り合わせるのも苦労します。でも、それだけに完成したときの喜びも大きかったのを覚えています。

多くの幾何学に関心のある人や、専門の幾何学者などは、多かれ少なかれ子供のころからのこういった体験が元になって幾何学に関心を持っている人が多いことと思われます。

そして多面体の理解はそういったことをしていく過程によって、だんだん深まります。

従来のソフトとの違い

多面体を構築するソフトや、多面体を表示するVRMLファイルはあちこちに置かれていますが、そのどれもが完成した状態をすぐに提示してしまうために、紙を切って一枚一枚 手作業で貼りつけていくときのような途中の過程がみえないために、あまり深い理解が得られないと思います。

しかし本ソフトは違うのです!!!

本ソフトは非常に人間的な発想に全体的に基づいています。人間が一枚一枚 紙を手にとって貼っていくときみたいに、一歩一歩構築し、その構築する仮定が手に取るようにわかるソフトなのです。 更に構築不能な組み合わせについても試すことができ、途中まで一歩一歩貼りつけ、貼れなくなるまで貼ることができます。

たぶん今までにこういうことを意図したソフトはなかったものと思います。

一様多面体(uniform polyhedron)を構築(build)するソフトなので、UniformPolyhedronBuilderと名づけました(何のひねりもないですが……^^;)。

UniformPolyhedronBuilder

従来の座標計算(その欠点と限界)

従来、例えばアルキメデス多面体の頂点座標の計算などは、正多面体の頂点などを切断するといった方法で、計算されてきました。この方法がもっとも簡単に座標を計算することができるからです。ただし、この方法には欠点があります。切断する深さ・角度などの数値をあらかじめ人間が手で計算しなければならないということです。そしてその数値計算は、そんなにやさしいものではありません。その上、切断の方式が大まかにわけて5通りほどあり、統一的に扱うのには不向きです。

そしてこの方法だと人間が手作業で紙を貼るときのような途中過程のようなものを見せることができません。

本ソフトの特徴

本ソフトは、一様多面体の頂点周辺の正多角形の並び順だけから、一様多面体の頂点座標をすべて計算し、一様多面体を構築します。

その並び順だけをもとに、ちょうど人間が紙を一枚ずつ貼っていくときのように貼り方をコンピュータが推理しながら貼っていきます。

そして、そういうプログラムであるために、一部の一様多面体においてコンピュータでも貼り方に迷いが生じ、うまく貼れないといったことが起こっています。そのためこのソフトウェアの開発当初の段階では全ての一様多面体の座標計算ができませんでした。今では全ての一様多面体の座標計算が可能なレベルまでバージョンアップしました。が、一様多面体の種類によっては計算に若干時間がかかります(最も時間のかかるもので、Celeron 400MHzで2秒弱)。

なぜそういうソフトがこれまでなかったか?

こういったソフトがこれまでにもあるものなのかは寡聞にして知りませんが、恐らくないものと思われます。似たものはあるにしても、まったく同じコンセプトのものはないと思います。

その理由はこの方法による座標計算にはいくつかの困難な問題があるからです。

困難な問題点

  1. 頂点周辺に集まる正多角形の個数が例えば5個以上になると、その5個の正多角形の空間上の座標計算だけでも実は大変困難なものとなります(4個までは簡単に代数的に解けます)。

  2. 菱形立方八面体(Rhombioctahedron)、ニセ菱形立方八面体(Pseudo Rhombioctahedron)、ねじれ立方八面体(Snub Cuboctahedron)、ねじれ十二・二十面体(Sunb Icosidodecahedron)といった立体は、頂点周辺の構造だけで立体を構成しようとすると、その置き方が複数存在し、容易に立体を構成できない。

  3. 頂点周辺を正多角形が1周する場合は問題ないのですが、それ以外の場合では、頂点に集まる多角形の種類だけでは、ぐらつきが生じ頂点部分の座標計算も一定しないという困った問題があります。(例:[4, 6, 4, 6]のような立体のとき)。

本ソフトはどうやって問題点を回避したか

1の問題点については、なにがなんでもその座標を求めることで解決させました。が……非凸一様多面体などで頂点図形(vertex figure)が凸多角形でない場合などで、計算困難な場合があり、その解決は非常に難航しました。どういうアルゴリズムで解決したのかについては、いずれ詳細を明らかにしたいと思っています。

2の問題点については、置き方が複数存在する場合、それを全通り試すことで解決させました。従って本ソフトウェアは一種の人工知能プログラムであるといえます。ただし、若干試し過ぎになるきらいがあり、2種類しか立体がない場合にも4種類みつけてしまったりする場合があります^^; これは処理の高速化のため合同な立体を発見した場合に省くという処理をいれていないためです。

3の問題点については、補助としてもう1枚正多角形を使うというアイディアで解決しました。簡単にいえば、隣り合う2枚の正多角形の間に存在しないもう1枚の正多角形があるかのごとく考えることで、ぐらつきをなくすという手法です。この手法はわたしσ(o^_^o)がなんとなく思いついて採用したものですが、既にある手法なのか独自のものなのか知りません^^;

ダウンロードの仕方に(/*⌒-⌒)oレッツゴー♪