NAME
        VectorMaker

   DESCRIPTION
        This module creates a geometric representation of vector data.  It can
        handle any 1..3-D floating-point lattice with up to three vector
        components.  The vector tails start at the lattice coordinate locations
        (although there is an option to center them over their coordinates) and
        point in the direction specified by the data components.  The vector data
        can be represented as various kinds of lines and arrows with numerous
        options for coloring, scaling, ignoring special values, etc.  An extra
        "reference" vector can also be created to show a vector of an exact
        magnitude for comparison to the data vectors.
        
        The purpose of VectorMaker is to combine all the best features (and
        then some) of the other vector modules.  VectorDisplay tries to do the
        same thing, but sometimes it seems as though it doesn't point the
        vectors in the correct direction.  Additionally, VectorMaker supports all
        the map projections of the Projector module.  The Projector module isn't
        too useful for vector lattices since it only manipulates their coordinates
        not their data, which is necessary for proper projection.
        
        ------------------------------------------------------
        NOTE: This module contains some projection code borrowed from
        the Projector module written by James Phillips at the Minnesota
        Supercomputer Institute and Department of Geology and Geophysics,
        University of Minnesota.
        ------------------------------------------------------

   INPUTS

      Vector Field -- Lattice
         (1..3-D, 1..3-vector, float).
         This is the field from which to generate the vectors.  If the data has fewer
         than three components then the missing ones are assumed to be zero.

      Scalar Field -- Lattice (Opt.)
         (1..3-D, 1..3-vector).
         This is a scalar field by which to color the vectors.

      Colormap -- Lattice (Opt.)
         (1-D, 4-vector, float, uniform).
         This is a colormap which can be used to color the vectors.

   WIDGETS

      Coloring -- Option Menu
         This determines how the vectors are to be colored.  The default is to use
         the settings of the color sliders ("Red", "Green", "Blue", and "Opacity")
         to make them all the same color.  They can also be colored by their
         magnitudes, horizontal magnitudes, vertical magnitudes, vertical levels,
         or by an optional scalar field.  If a colormap is not connected then the
         default internal one (a linear spectrum of blue to red) is used for the
         magnitude and vertical-level coloring options.  The scalar-field option
         requires that a scalar-field lattice and a colormap must both be
         connected.

      Red -- Slider
         This is the red component of the vector color.

      Green -- Slider
         This is the green component of the vector color.

      Blue -- Slider
         This is the blue component of the vector color.

      Opacity -- Slider
         This is the opacity component of the vector color.

      Style -- Option Menu
         This is the style to use when generating the vectors.  They can be:
         
            Fade Lines - Drawn a single line which starts as black at the tail and
               gradually increases to full color at the head.
            Line Arrows (2) - Drawn as a line with two prongs at the head.
            Line Arrows (4) - Drawn as a line with four prongs at the head.
            Cross Arrows - Drawn as a line with the head consisting of two solid
               triangles.
            Solid Cross Arrows - Drawn as a line with the head consisting of a
               solid four-sided pyramid.
            Cylindrical Arrows - Drawn as a cylinder with a cone at the head.

      Line/Tube Width -- Text
         This is the width (in integer pixels) of the vector line segments or a
         scaling factor (in floating point) to be applied to the vector cylindrical
         tubes.

      Radius Style -- Option Menu
         This determines how the radius (size) is to be calculated for the arrow
         heads (and the shafts of the cylindrical arrows).  The radius can be
         data-dependent or can be fixed for all the vectors based on the average
         magnitude (not including values below the threshold).

      Surface Complexity -- Slider
         This is the complexity of the cylindrical arrows.  It determines how many
         polygons are used to approximate each surface.  The range is from 0.0
         to 1.0.

      Radius Scale -- Dial
         This is a scaling factor to be applied to the perpendicular distance from
         the vector shafts to the ends of the arrow heads.  It changes the angle
         between the lines of the arrow heads and the vector shafts, but it
         doesn't change the percentage of the vector lengths occupied by the
         arrow heads.  This scale represents the percentage of the vector
         lengths to be used as the perpendicular distance to the arrow heads; a
         value of 1.0 means 100%, .5 means 50%, etc.

      Length Scale -- Dial
         This is a scaling factor to be applied to the lengths of the vectors which
         also affects the sizes of their arrow heads.

      Arrow Head Scale -- Dial
         This is a scaling factor to be applied to the lengths of the arrow heads
         of the vectors.  The ends of the arrow heads remain the same
         perpendicular distance from the vector shafts during scaling.  This
         scale represents the percentage of the vector lengths occupied their
         heads; a value of 1.0 means 100%, .5 means 50%, etc.

      Magnitude Threshold -- Text
         This is the lower limit of valid vector magnitudes.  Any vector with a
         magnitude less than or equal to this threshold is not displayed.

      Center? -- Option Menu
         This allows the centers of the vectors (adjusted for length scaling) to be
         positioned at their lattice coordinate locations.  The default behavior is
         for the vector tails to start at those coordinates.

      Projection -- Option Menu
         This is the current map projection.  The input lattice should have
         geographic coordinates for the projection to be meaningful.
         VectorMaker provides the same projections as the Projector module
         (Cartesian, Mercator Cylindrical, Lambert Cylindrical, Gnomonic
         Azimuthal, Stereographic Azimuthal, Orthonormal Azimuthal, Postel
         Azimuthal, Lambert Azimuthal, Lambert Conical, Albers Conical,
         Cassini-Soldner, Bonne Connical, Werner, Sanson-Flamsteed, and
         Globe).  See Projector's help file for more information about these
         projections.

      Projection Radius -- Text
         If a projection is selected then this value is used as the radius to
         provide proper scaling of the longitudes and latitudes.

      Base Lon. -- Slider
         This is the base longitude for the center of the map projection.  It is not
         used for the "Globe" projection.

      Base Lat. -- Slider
         This is the base latitude for the center of the map projection.  It is not
         used for the "Globe" projection.

      1st St. Par. -- Slider
         This is the 1st standard parallel used by the "Lambert Conical" and
         "Albers Conical" projections.  It indicates the intersection of a cone
         with the projection.

      2nd St. Par. -- Slider
         This is the 2nd standard parallel used by the "Lambert Conical" and
         "Albers Conical" projections.  It indicates the intersection of a cone
         with the projection.

      Autoscale -- Button
         This button tries to set the "Length Scale" to a reasonable value based
         on the vector lattice's data and coordinates.

      Ignore Special? -- Option Menu
         This determines whether any vectors with components that match the
         "Special Value" will be ignored.

      Special Value -- Text
         This is a special value which can be ignored so that no vectors which
         have this value will be created.

      Magnitude & Units -- Text
         This is the label for the reference vector which must contain its numeric
         magnitude.  The reference vector will not be shown without a specified
         magnitude.

      Color -- Text
         This is the RGBA color of the reference vector.  It is specified with four
         integers for the red, green, blue, and opacity components in the range
         of 0 to 255.  If this widget is empty then the reference vector will be
         colored based on the setting of the "Coloring" widget.  Any setting
         other than "User-specified color" will color the reference vector by its
         magnitude (using the same colormap as the data vectors) since the rest
         of the choices are not really applicable to it.

      Alignment Axis -- Option Menu
         This is the coordinate axis to which the reference vector should be
         parallel.

      Vector X,Y,Z Offsets -- Text
         These are optional X, Y, and Z coordinate offsets to translate the
         reference vector's position.

      Font Name -- Text
         This is the name of the font used for the reference vector's label.  Some
         choices are listed in the "Font Names 1" and "Font Names 2" menus.
         Note: All the ones in the "Font Names 2" menu (except for Symbol) are
         SGI-specific.  The name of any other font available on the system
         running Explorer can also be used by just entering it in the widget.

      Font Size -- Slider
         This is the point size of the font used for the reference vector's label.
         If the point size is less than 1 then the text label will not be displayed.

      String X,Y,Z Offsets -- Text
         These are optional X, Y, and Z coordinate offsets to translate the
         reference vector's label.

      Show? -- Option Menu
         This determines whether the reference vector is created.

   OUTPUTS

      Output -- Geometry
         This is the vector geometry.

   KNOWN PROBLEMS
      The autoscaling may not produce a reasonable value with widely varying
      data and/or coordinates.  There are no known bugs.

   SEE ALSO
      Projector, VectorDisp, VectorDisplay, Vectors, VectorGen
      
      -
      
      Hans Vahlenkamp (Hans.Vahlenkamp@noaa.gov)
      Geophysical Fluid Dynamics Laboratory / NOAA
      Princeton University Forrestal Campus
      http://www.gfdl.noaa.gov