マーチングキューブ法
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を増やす)