Usage: levelSets [-C constant] [-E epilon] This is run from the Maya command line, not outside of Maya. constant is the amount of additional growth. epsilon is amount of change that is based on curvature. So the equation for any point on the surface is C - E*K where K is the curvature of the surface at that point. NOTE: this is not yet the true usage, but the planned usage. This will be corrected as soon as the system is operational again. The implicit project being worked on here contains code for a Maya plug-in which takes an initial set of data and grows this data. The data which may start off with rough corners will eventually grow until smooth. It does this by growing areas of low curvature at a faster rate than those areas consisting of a high curvature. The neighbors of the surface are the only voxels that are needed to be updated. The values at these locations fall between -1 and 1. All other locations have the value of 1 for inside and -1 for outside. This brings the computation time down to O(n^2) for every growth compared to the time of O(n^3) for the entire volume. In this way the algorithm is as fast as Sethian's up-wind fast march method assuming that the entire surface is updated. Yet in this way the algorithm allows for growth and/or shrinkage of the surface at the same time. Here we will add a constant in order that the surface grows on average rather than shrink. CLASSES: Interfaces for all classes are in the appropriate header files. Cube This class is one point or voxel located within the Grid. CubeTable This is used for the marching cubes algorithm. Grid This is the primary interface for the project. Data is set up here, stored, modified, computed, etc. Heap An implementation of a heap. Iterator A general virtual iterator to be used as the parent class for all iterators Link Facilitator for operations on lists. Maintains a single element for the linked list class. List An implementation of a List. templates are used here to allow any data types. ListIterator Implements iterator protocal for linked lists. Also permits removal and addition of elements Triangle An implementation of a Triangle. Vector An implementation of a Vector levelSets This is the 'main' of the program. All interaction with Maya is located within this file. mathLevelSets This class contains math functions required for the project. This mainly consists of computing derivatives. OTHER FILES: Makefile This compiles and links all the required files. This also copies the final binary file to the maya plug-ins directory. backup This sub directory contains the latest backed up files backup_fastmarch This directory contains the old code of trying to use Sethian's fast marching method using upwind schemes. backup_windows This contains the original code which was written for windows. whitaker_publications Contains ps files of some of whitaker's work. ../plugins Contains the latest version of the program as well as other sample programs. TODO: The latest code needs tested. This will essentially have two sets of Grids. In the past the new data replaced the old immediately after being computed. Now the new data does not replace the old until the entire surface has been stepped through. This seems to have been the problem with the noise previously encountered. The code needs cleaned up and additional comments added where ambigious. NOTES: July 12th 1998 Rayovac is still down which contains the libraries to compile Maya plug-ins. Rayovac is also required to run Maya, so testing has come to a complete stand still. Hopefully after Siggraph the system will be back up so the project can be wrapped up.