2変数関数のグラフの鳥瞰図を何らかの手段を用いて描いても、 「何だかよく分からない」ことが結構ある。 普通は透視変換を用いるのだが、 視点と透視平面をどう選択するかが、 実質「ツールにお任せ」、 あるいは「叩き台にしたプログラムのコピー」になってしまっていて、 扱っている問題に合わないことが原因であることが多い。 遠回りのようだが、使っているものの仕組みを知ることは重要だ、ということである。
中村君は、MitsuiWorld の透視変換の仕組みを解読して、 視点を GUI で自由に変更できるようにして、 あたかも空間内を周遊するようなプログラムを作った。 実は問題をもちかけた側としては、 一般の場合に、簡易化した隠面消去法は正しく動かないはずなので、 Zバッファ・アルゴリズムを使うしかないだろうと考えていたのだが、 中村君はていねいに場合分けすることで上手く問題を解決できたようである。 この点でこちらの期待以上のことを達成してくれた。 Zバッファ・アルゴリズムよりも軽く、使い勝手がよい。
デモ・プログラムとして、2次元波動方程式を解くプログラムを作ってくれたが、 これが視点のみならず、時刻もスクロール・バーで自由に変更できるプログラムで、 結果的に時空を自由に周遊するようなものになった。 正直、これまでに見たことがないプログラムである。 波動方程式は、熱方程式に比べて軽い計算で済む、 ということに助けられた面が大きいが、 シミュレーション・プログラムの新しい可能性を見られた気がする (大げさのようだが、不思議な感覚である)。
卒研レポートは、 http://nalab.mind.meiji.ac.jp/~mk/labo/report/pdf/2007-nakamura.pdfで 限定公開中である。なお、ソース・プログラムも http://nalab.mind.meiji.ac.jp/~mk/labo/report/prog/2007-nakamura-prog.lzhで限定公開している。 http://nalab.mind.meiji.ac.jp/~mk/labo/report/open/2007-nakamura-museum/にアクセスすると試すことが出来る。