The term "surface", when used to refer to the entity upon which the Evolver operates, refers to all the geometric elements plus auxiliary data such as constraints, boundaries, and forces.
There are no limitations on how many edges may share a vertex nor on how many facets may share an edge. Thus arbitrary topologies are possible, including the triple junctions of surfaces characteristic of soap films.
Edges and facets are oriented for bookkeeping purposes, but there are no restrictions on the orientation of neighboring facets. Unoriented surfaces are thus possible.
A surface is deemed to have a total energy, arising from surface tension, gravitational energy, and possibly other sources. It is this energy which the Evolver minimizes.
No particular units of measurement are used. The program only deals with numerical values. If you wish to relate the program values to the real world, then all values should be within one consistent system, such as cgs or mks.
The initial surface is specified in a text file (hereafter
referred to as the datafile) that may be created with any
standard text editor.
(The .fe
extension I always use for datafiles stands for
facet-edge, which refers to the internal data structure
used to represent the surface. You may use any name
you wish for a datafile.)
The basic operation of the Evolver is to read in a datafile and take commands from the user. The main command prompt is
Enter command:The most common commands are one letter (case is significant for these), sometimes with a numerical parameter. The most frequently used commands are:
g n do n iterations ('g' is for 'go') r refine the triangulation of surface P graphics output (option 8 for geomview, option 3 for PostScript) s show surface on screen (Evolver's own simple graphics) q quitThere is also a more elaborate command language (in which case is not significant). Commands must be followed with the ENTER key; Evolver only reads complete lines.
An iteration is one evolution step. The motion for the step is calculated as follows: First, the force on each vertex is calculated from the gradient of the total energy of the surface as a function of the position of that vertex. The force gives the direction of motion. Second, the force is made to conform to whatever constraints are applicable. Third, the actual motion is found by multiplying the force by a global scale factor.