Metaballs and Marching Squares
jamie-wong.com
jamie-wong.com
I used that in the 90s to do a Lisp implementation: http://people.cs.uchicago.edu/~wiseman/3D/marching-cubes/
Edit: my thesis advisor was the first to prove that there were exactly 15 distinct configurations of voxels in MC, which gives you the ability to perform constant time lookup for the (configuration, rotation) for vertices on the edge of any particular voxel. http://graphics.stanford.edu/courses/cs164-10-spring/Handout...
The marching cubes are not just evaluated to find the surface where Voxel(xyz)=value
But rather F(Voxel(xyz))=value
What gets interesting is that both pre-interpolated, and post-interpolated versions are interesting.
[1]https://jsexperiments.herokuapp.com/sph/ [2]https://github.com/asadlionpk/SPHjs
Just like you can define the perimeter of a circle given constants (x_0, y_0, r):
(x-x_0)^2 + (y-y_0)^2 = r^2
you can define the perimeter a metaball on a list of (x_i, y_i, r_i) as described in the post.
Metaballs are a thing, and marching cubes is one way of implementing them. Another approach is ray-casting.
You can think of metaballs as a bunch of glowy points. The implicit surface that is shown is all of the points where the glows add up to some target value.
Possibly quite dated, though.
I'm like a Computer Graphics groupie.