マーチングキューブ法

ソースコード
march.tar.gz
説   明
三次元格子に与えられた濃度分布から、マーチングキューブ法によって 等濃度面を多角形化し、ワイヤーフレームまたはZバッファ法で隠面消去し描きます。 色は拡散反射で計算しています。また、 任意の位置(R, the, phi)から見た曲面を表示でき、角度は画面上の マウスドラッグで変えられます。マーチングキューブ法は資料にある メモリを効率良く使うものを実装しきれなかったので、メモリを多く消費するが 単純な方法を実装しました(頂点の重複を全く考慮しないでその都度生成)。
諸事情よりアプレットではなくアプリケーションです。 ソースファイルをあるディレクトリで展開すると、 そこにmarchというディレクトリができます。
tar -zxvf march.tar.gz
java -mx30m -classpath . march.MarchApp [sphere|metaball|metaball2] &
で起動します。引数でsphere, metaball, metaball2を指定して描く物体を選べます。 sphere, metaballの格子サイズは64x64x64です。 metaball2 は metaballの 細かくなったもので、128x128x128です。metaball2は実行するのに -mx50mくらい必要です。
操 作
"ZBuffer" 隠面消去モードのオンオフ。
"Zoom In" ズームイン(Rを減らす)
"Zoom Out" ズームアウト(Rを増やす)