home *** CD-ROM | disk | FTP | other *** search
/ Stars of Shareware: Programmierung / SOURCE.mdf / programm / msdos / c / spline29 / spline.doc < prev    next >
Text File  |  1992-11-11  |  6KB  |  141 lines

  1. NAME
  2.     spline - interpolate using splines under tension
  3.  
  4. SYNOPSIS
  5.     spline  [infile  [outfile]]  [options]
  6.  
  7. DESCRIPTION
  8.     SPLINE reads pairs of numbers (x- and y-values) from the
  9.     standard input (or the given file), generates a smooth curve
  10.     through the points, and writes to the standard output (or given
  11.     file) points from the smooth curve.  The curve is a spline
  12.     under tension (see references), which is somewhat "tighter"
  13.     than a cubic spline, and less likely to have spurious
  14.     inflection points.  
  15.  
  16.     As with GRAPH, each pair of points may optionally be followed
  17.     by a comment.  If the comment is surrounded by quotes "...",
  18.     the comment may contain spaces.  The given points, and their
  19.     comments if any, will be included in the output.  The
  20.     interpolation may optionally be restarted after each label, so
  21.     that a family of curves may be processed together (see the -b
  22.     switch).
  23.  
  24.     Input lines starting with ";" are copied to the beginning of
  25.     the output file but are otherwise ignored.  A ";" anywhere else
  26.     in the line introduces a comment which is discarded.  Other
  27.     lines not beginning with a number, including blank lines, are
  28.     ignored.
  29.  
  30.     If the -c switch is not used, the input points must be from a
  31.     function - that is, the x values must be either strictly increasing
  32.     or strictly decreasing.  The output points will also be from a
  33.     function.  (If the -b switch is used, this restriction applies only
  34.     within each segment.)
  35.  
  36.     If the -c switch is used (indicating a general curve), the
  37.     input points need not be from a function, but each pair of
  38.     points must be separated from the previous pair by a finite
  39.     distance.  (If the -b switch is used, this restriction applies
  40.     only within each segment.)
  41.     
  42. OPTIONS
  43.     Options can appear before, among, or after file names provided
  44.     a file name cannot be mistaken for the parameter of an option. 
  45.  
  46.   -a  [step [start]] 
  47.           Input data contains only y values - generate automatic
  48.           abscissas at intervals of step (default 1) starting at
  49.           start (default 0).
  50.  
  51.   -b         break the interpolation at each label.  That is, the input
  52.         curve is divided into sections with the last point in
  53.         each section marked by a label (which may be empty:
  54.         "").  A separate interpolating curve is to be found for
  55.         each section.  In this case, the requirements on the
  56.         number of intervals (specified by the -n switch or
  57.         defaulted) and the interpolation range (specified by the 
  58.         -x switch) are applied to each section independently.
  59.  
  60.   -c            general curve rather than function.  In this case, the
  61.               curve is parameterized on the polygonal arclength from
  62.               the first to the last given point, with the whole
  63.               length scaled to be 1.  Thus, the values min and max
  64.               for the -x switch should satisfy 0 <= min < max <= 1. 
  65.               The -s and -c switches cannot be used together.
  66.  
  67.   -i  file    Explicit interpolation at x values given in file.  Only
  68.           1st number on each line of file is used - rest of line
  69.           is ignored.  Lines that don't start with a number
  70.           are ignored.  With the -c switch, use -ix rather than -i.
  71.  
  72.   -ix file
  73.   -iy file
  74.   -iz file      Implicit interpolation at x (y, z) values from the file.  
  75.           Only 1st number on each line of file is used - rest of
  76.           line is ignored.  Lines that don't start with a number
  77.           are ignored.  Without the -c switch, use -i rather
  78.           than -ix.
  79.  
  80.   -n  num       interpolate over num intervals (default is 100), yielding
  81.           n+1 points.
  82.  
  83.   -q            Quadruple: increase the number of intervals fourfold.
  84.  
  85.   -s [num [num]]
  86.           Specify slopes at beginning and end of curve.  Slopes
  87.           not given are assumed to be zero.  Without the -s 
  88.           switch, slopes are determined from other information.  
  89.           If only one slope is to be specified, the other can be
  90.           given as "n" (for "natural").  The -s and -c switches
  91.           cannot be used together.
  92.  
  93.   -t num    Specify tension in interpolating curve.  Tension of 50 gives
  94.         almost polygonal line, tension of .01 gives almost cubic
  95.         spline.  Tension must be positive.  Default is 1.
  96.  
  97.   -x [min [max]]
  98.           Interpolate from min to max only.  min and max should
  99.           be in the range of the given x values, except that if
  100.           the -c switch is used they should satisfy 0 <= min <
  101.           max <= 1.
  102.  
  103.   -xl        take log of x values before interpolating, take exponential
  104.            afterwards (probably necessary if -xl switch is needed for
  105.            GRAPH)
  106.  
  107.   -yl        take log of y values before interpolating, take exponential
  108.            afterwards (probably necessary if -yl switch is needed for
  109.            GRAPH)
  110.  
  111.   -zl        take log of z values before interpolating, take exponential
  112.            afterwards (implies -3)
  113.  
  114.   -xt -yt -zt    take tanh of x, y, or z values before interpolating, 
  115.           take arc tanh afterwards.  Data values are restricted
  116.           to (0, 1).  (-zt implies -3).
  117.  
  118.   -3        3D curve: each input line has an x, y, and z
  119.  
  120. NOTES
  121.     Inspired by the Unix routine, but afflicted with creeping
  122.     featuritis.
  123.  
  124. REFERENCES
  125.  
  126.     A. K. Cline, "Scalar- and Planar- Valued Curve Fitting Using
  127.     Splines Under Tension", Communications of the ACM v 17 n 4 p
  128.     218-223 (Apr 74).
  129.  
  130.     Schweikert, D. G. "An interpolation curve using a spline in
  131.     tension", J. Math. and Physics v 45 p 312-317 (1966).
  132.  
  133. SEE ALSO
  134.     GRAPH, SMOOTH, DOTS
  135.  
  136. AUTHOR
  137.     Copyright (c) 1985 - 1992  James R. Van Zandt
  138.  
  139.     Resale forbidden, copying for personal use encouraged.
  140.  
  141.