The algorithm works by examining each voxel of the dataset, and determines if each of the vertices is inside or outside the surface. This is recorded with the vertices, and in the case of isosurfaces involves a comparison of the vertex's data value with the user-selected isosurface value. In this way, the edges of the voxels along which the isosurface intersects can be determined, and the position of the surface's intersection is approximated using trilinear interpolation.
The assumption is made that there is at most one surface intersection per edge, this gives rise to 256 possible voxel configurations (in terms of the vertex classifications -- there are eight vertices, each of which can be in one of two states, ). By excluding cases which are specularly and rotationally isomorphic, this number reduces to 15 possible cases3. These cases describe the triangle mesh configuration of the voxel, and are thus used as the approximation to the surface.
The algorithm then calculates a normal vector for each vertex, by taking the central difference of the surrounding vertex values. This normal is used for shading purposes during the rendering stage.
The triangles and normals may then be output to any standard computer graphics rendering technique, where the image itself is formed.