In contrast to Time_Object and Time_Curve which only uses one geometry, class Surface provides additional geometries:
#CLASS Surface : Time_Object { CHAIN *model; /* This is the model which is used for almost all operations (computation, reflection etc). Depending on the current TASK, model points to geometry, domain, gauss or conjugate */ CHAIN *domain; /* Chain of timesteps for domain */ CHAIN *gauss; /* Chain of timesteps for gauss */ CHAIN *conjugate; /* map and conjugate surface */ CHAIN *conj_inter; /* Interpol instance for display etc */ double *asso; /* Pointer to current associate value */ REFLECTION_CONTROL *reflect; /* Used for reflection */ };
These geometries are used to store the domain, the gauss map, i.e. the stereographic projection of the normals onto the plane, and a conjugate geometry which usually has the same connectivity as the geometry.
For Surface and its subclasses the task is used to select one of the geometries as the current model (compare section 7.4.1.1), changing the task with "set-task" will also change the model. Most methods which work on a single geometry use the model, "display" for example computes the current time section from the model and stores it in inter.
Like inter for the model, the conj_inter instance is usually used to store the current time section of the conjugate geometry. Together with the asso variable which can be used to define an interpolation between inter and conj_inter this allows to visualize a two-parameter family of surfaces, see 7.4.3.4 for an example.
Copyright © by the Sonderforschungsbereich 256 at the Institut für Angewandte Mathematik, Universität Bonn.