NAME
        Lat3DToGeom

   DESCRIPTION
        This module generates the geometry for any number of horizontal or
        vertical planes from a 3-D perimeter or curvilinear lattice.  A list is kept
        (in a special format) of all the requested planes.  Planes may be
        arbitrarily added and deleted from this list.  Once all the desired planes
        have been specified, then they can be generated simultaneously.
        Lat3DToGeom has the ability to generate the planes over a selected data
        range with the "Range Start" and "Range End" widgets (plus optional
        special value removal) rather than over the entire data range as does
        the LatToGeom module.  It can also create the geometry as points, lines,
        or polygons (triangles) with or without interpolated lattice cell centers.
        Finally, a few options are provided for automatic plane generation to aid
        animation.

   INPUTS

      Input -- Lattice
         (3-D, 1-vector, float, perimeter..curvilinear).
         This is the lattice from which to generate the planes.

      Colormap -- Lattice
         (1-D, 4-vector).
         This is the colormap for the planes.

   WIDGETS

      Lattice Info -- Text
         This is the dimensions of the current lattice.  Typing into this widget
         has no effect.

      Dimension -- Radio Box
         This selects how the plane geometry is to be drawn.  It can be
         represented as points, lines, or the standard shaded polygons.
         Lowering the dimension will speed up rendering for better interactive
         manipulation.

      Use Centers? -- Option Menu
         Setting this to "Yes" adds interpolated centers to each full 1x1 lattice
         cell essentially breaking them up into 4 triangles instead of the usual
         two.  Using the centers evens out the color shading across the cell
         without a bias to any corner.  The center points are also visible with
         point or line geometry.  Note: Using the interpolated centers can
         double the geometry size.

      Auto Planes? -- Option Menu
         This controls if and how lattice planes are automatically generated.  The
         possible choices are:
         
            No - Planes are not automatically generated; the "Generate Planes!"
               button must be pressed (the default setting).
            Exteriors - Whenever the input lattice changes, the plane list is
               automatically cleared out, the lattice's six exterior planes are
               added to the list (basically the same as the "Add Default Planes"
               button), and then they are generated over the specified data range.
            Data - Whenever the input lattice changes, all the specified planes
              are automatically generated over the specified data range.
            Ranges - Whenever the "Range Start" or "Range End" widgets
               change, all the specified planes are automatically generated over
               the new data range if "Range Type" is set to "Selected".
            All - This automatically clears out the plane list, the lattice's six
               exterior planes to the list, and generates them all whenever the
               "Range Start" or "Range End" widgets change or whenever the
               input lattice changes.  It's a combination of the "Exteriors",
               "Ranges", and "Data" functions.
         
         This automation can be useful for animation purposes so that no
         buttons have to be pressed or selections made during looping.

      Range Type -- Option Menu
         This toggles between generating a plane over all the data values of the
         lattice ("Full") or only over the range specified by the "Range Start"
         and "Range End" values ("Selected").

      Range Start -- Dial
         This is the lower bound of the range of data values to include in the
         planes.

      Range End -- Dial
         This is the upper bound of the range of data values to include in the
         planes.

      Lattice Planes -- Scroll List
         This is a list of all the planes currently entered.  An example of the
         format is as follows:
         
            1 60 1 36 K 1
         
         The first two numbers indicate the start and end of the first axis of the
         plane.  The second two numbers indicate the start and end of the
         second axis of the plane.  Next is the axis that will be fixed for the
         plane.  It can be I, J, or K (either uppercase or lowercase).  Finally,
         there is the value along the fixed axis.  All numbers represent grid
         points not actual coordinates.  The specification of the planes is
         always in the order of I,J, and K.  Therefore if K is fixed then the plane
         will be IxJ (60x36 in the example).  If I is fixed then the plane will be
         JxK and if J is fixed then the plane will be IxK.  These assumptions are
         made in order to keep the plane format as simple as possible.

      Add Plane -- Text
         This allows a new plane to be added to the "Lattice Planes" list.  The
         entered string must be in the same format as used in the
         "Lattice Planes" list.

      Add Default Planes -- Button
         This adds all the exterior planes around the 3-D lattice to the
         "Lattice Planes" list.  There are always six of them and they extend
         the full length of the lattice in all directions.

      Delete Selected Planes -- Button
         This deletes the planes which are highlighted in the "Lattice Planes"
         list.  There is no "undo" capability!

      Generate Planes! -- Button
         This tells the module to start creating the geometry for all the planes
         specified in the "Lattice Planes" list.  It will print what it's doing in the
         Explorer Log window.

      Saved List -- Text
         This hidden port is used to save all the entries in the "Lattice Planes"
         list.  Nothing should ever be connected to it or unpredictable results
         might occur!

      Special Value -- Text
         Any triangles which contain data points that match this special value
         will not be created when the "Range Type" is set to "Selected".  This
         will also prevent interpolation around special values; they are clipped
         out altogether.

      Print Progress -- Option Menu
         This port is used in conjunction with the "Print Progress" and
         "Don't Print Progress" selections in the "Options" menu.  It determines
         whether status information is printed as to what lattice planes have
         been generated so far.

   OUTPUTS

      Output -- Geometry
         This is the geometry for all the generated planes.

   KNOWN PROBLEMS
      The geometry is not as optimized as it could be; future versions will
      hopefully be more efficient.  There are no known bugs.

   SEE ALSO
      GenerateColormap, LatToGeom, LatToGeomNaN, MultiSlice, Render,
      RenderRemote

      -
      
      Hans Vahlenkamp (Hans.Vahlenkamp@noaa.gov)
      Geophysical Fluid Dynamics Laboratory / NOAA
      Princeton University Forrestal Campus
      http://www.gfdl.noaa.gov