Home     Current Work     Modeling     Rendering     Animation     Dynamics     Programs     Resume  

The Algorithm

The algorithm I used is conceptually quite simple. Given the grid of scalar data, there are several steps that must be performed. 1. The space is divided into a matrix of cubes (whose corners match the locations of scalar data in three-dimensional space). 2. The points of intersection must be found. To do this, I simply cycled through the data and compared it to three of its neighbors (in x, y, and z direction to avoid duplicates). I constructed an array of these intersection points. Linear interpolation was used. 3. Edges and their directions are computed. This is done by examining each intersection within a cube and identifying the exact combination of hot (above threshold) and cold (below threshold) vertices. An edge and its direction is constructed based on the exact arrangement of these intersections and vertices. For details on these cases, refer to the paper referenced below. 4. The connectivity list was constructed. Triangles were used. Where cubes had more than three points of intersection, a centroid (3-D midpoint) was computed and used as the third point of each edge. 5. The final mesh was drawn. Assuming edges were constructed with the proper direction, the normals will be accurate.

Images

Below are some interesting images generated from different data sets. The first two are different thresholds for the same data set showing two very different meshes. The third is data collected from a "Bucky Ball" C48 molecule. The shape of the molecule is visible in the mesh. The fourth is data taken from a storm. The fifth is data taken of two merging Neutron Stars.


>> Back