calc: Three Dimensional Graphics

 
 14.2 Three-Dimensional Graphics
 ===============================
 
 The ‘g F’ (‘calc-graph-fast-3d’) command makes a three-dimensional
 graph.  It works only if you have GNUPLOT 3.0 or later; with GNUPLOT
 2.0, you will see a GNUPLOT error message if you try this command.
 
    The ‘g F’ command takes three values from the stack, called “x”, “y”,
 and “z”, respectively.  As was the case for 2D graphs, there are several
 options for these values.
 
    In the first case, “x” and “y” are each vectors (not necessarily of
 the same length); either or both may instead be interval forms.  The “z”
 value must be a matrix with the same number of rows as elements in “x”,
 and the same number of columns as elements in “y”.  The result is a
 surface plot where ‘z_ij’ is the height of the point at coordinate
 ‘(x_i, y_j)’ on the surface.  The 3D graph will be displayed from a
 certain default viewpoint; you can change this viewpoint by adding a
 ‘set view’ to the ‘*Gnuplot Commands*’ buffer as described later.  See
 the GNUPLOT documentation for a description of the ‘set view’ command.
 
    Each point in the matrix will be displayed as a dot in the graph, and
 these points will be connected by a grid of lines (“isolines”).
 
    In the second case, “x”, “y”, and “z” are all vectors of equal
 length.  The resulting graph displays a 3D line instead of a surface,
 where the coordinates of points along the line are successive triplets
 of values from the input vectors.
 
    In the third case, “x” and “y” are vectors or interval forms, and “z”
 is any formula involving two variables (not counting variables with
 assigned values).  These variables are sorted into alphabetical order;
 the first takes on values from “x” and the second takes on values from
 “y” to form a matrix of results that are graphed as a 3D surface.
 
    If the “z” formula evaluates to a call to the fictitious function
 ‘xyz(X, Y, Z)’, then the result is a “parametric surface.” In this case,
 the axes of the graph are taken from the X and Y values in these calls,
 and the “x” and “y” values from the input vectors or intervals are used
 only to specify the range of inputs to the formula.  For example,
 plotting ‘[0..360], [0..180], xyz(sin(x)*sin(y), cos(x)*sin(y), cos(y))’
 will draw a sphere.  (Since the default resolution for 3D plots is 5
 steps in each of “x” and “y”, this will draw a very crude sphere.  You
 could use the ‘g N’ command, described below, to increase this
 resolution, or specify the “x” and “y” values as vectors with more than
 5 elements.
 
    It is also possible to have a function in a regular ‘g f’ plot
 evaluate to an ‘xyz’ call.  Since ‘g f’ plots a line, not a surface, the
 result will be a 3D parametric line.  For example, ‘[[0..720],
 xyz(sin(x), cos(x), x)]’ will plot two turns of a helix (a
 three-dimensional spiral).
 
    As for ‘g f’, each of “x”, “y”, and “z” may instead be variables
 containing the relevant data.