このデモプログラムは,3次元空間に配置した点の凸包 (それらの点を含む最小の凸図形)を作ります。 [Clear] ボタンをクリックすると,画面がクリアされて, 点を6個配置するよう要求してきます。 マウスで空白の場所をクリックすると,新しい点が配置されます。 すでにある点を移動させたいときには,マウスでドラッグしてください。 6点を配置すると,プログラムはその凸包を作ります。 その後,新たに点を加えたり, すでに配置されている点の位置を変更したりすると, そのたびに凸包を計算しなおします。
枠の右と下にスクロールバーがありますが, それをマウスで動かすと座標が回転されます。 これを利用すると,構造が立体的に知覚できます。
新たに加えた点の奥行きは0にセットされます。 すでにある点を動かすときには,奥行き方向はもとのままに保たれます。 奥行きを変えたかったら,座標を回転してから, 点を加えたり動かしたりする操作を施してください。
新しい点は奥行き0に配置されますから, 多くの点が同一平面の上に並ぶという退化したデータを簡単に作れます。 退化したデータは,プログラムにとっては例外処理を要する意地悪データです。 でも,このデモプログラムは,どれほどひどい退化が生じても決して破綻しないことが (私のコーディングミスの可能性を除けば)理論的に保証されています。 できるだけ意地悪なデータを与えて, このプログラムが本当にロバストかどうか試すのも面白いかもしれません。 (実は,どんなにがんばって意地悪データを作ってみても,決してプログラムは破綻せず, 皆さんのほうが疲れるだけでちっとも面白くなかったという結果に 終わることを私は信じていますが...)
杉原厚吉(東大)
このデモは 東京大学 杉原厚吉 教授 のプログラムを利用しています。