home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Stars of Shareware: Programmierung
/
SOURCE.mdf
/
programm
/
msdos
/
c
/
spline29
/
spline.doc
< prev
next >
Wrap
Text File
|
1992-11-11
|
6KB
|
141 lines
NAME
spline - interpolate using splines under tension
SYNOPSIS
spline [infile [outfile]] [options]
DESCRIPTION
SPLINE reads pairs of numbers (x- and y-values) from the
standard input (or the given file), generates a smooth curve
through the points, and writes to the standard output (or given
file) points from the smooth curve. The curve is a spline
under tension (see references), which is somewhat "tighter"
than a cubic spline, and less likely to have spurious
inflection points.
As with GRAPH, each pair of points may optionally be followed
by a comment. If the comment is surrounded by quotes "...",
the comment may contain spaces. The given points, and their
comments if any, will be included in the output. The
interpolation may optionally be restarted after each label, so
that a family of curves may be processed together (see the -b
switch).
Input lines starting with ";" are copied to the beginning of
the output file but are otherwise ignored. A ";" anywhere else
in the line introduces a comment which is discarded. Other
lines not beginning with a number, including blank lines, are
ignored.
If the -c switch is not used, the input points must be from a
function - that is, the x values must be either strictly increasing
or strictly decreasing. The output points will also be from a
function. (If the -b switch is used, this restriction applies only
within each segment.)
If the -c switch is used (indicating a general curve), the
input points need not be from a function, but each pair of
points must be separated from the previous pair by a finite
distance. (If the -b switch is used, this restriction applies
only within each segment.)
OPTIONS
Options can appear before, among, or after file names provided
a file name cannot be mistaken for the parameter of an option.
-a [step [start]]
Input data contains only y values - generate automatic
abscissas at intervals of step (default 1) starting at
start (default 0).
-b break the interpolation at each label. That is, the input
curve is divided into sections with the last point in
each section marked by a label (which may be empty:
""). A separate interpolating curve is to be found for
each section. In this case, the requirements on the
number of intervals (specified by the -n switch or
defaulted) and the interpolation range (specified by the
-x switch) are applied to each section independently.
-c general curve rather than function. In this case, the
curve is parameterized on the polygonal arclength from
the first to the last given point, with the whole
length scaled to be 1. Thus, the values min and max
for the -x switch should satisfy 0 <= min < max <= 1.
The -s and -c switches cannot be used together.
-i file Explicit interpolation at x values given in file. Only
1st number on each line of file is used - rest of line
is ignored. Lines that don't start with a number
are ignored. With the -c switch, use -ix rather than -i.
-ix file
-iy file
-iz file Implicit interpolation at x (y, z) values from the file.
Only 1st number on each line of file is used - rest of
line is ignored. Lines that don't start with a number
are ignored. Without the -c switch, use -i rather
than -ix.
-n num interpolate over num intervals (default is 100), yielding
n+1 points.
-q Quadruple: increase the number of intervals fourfold.
-s [num [num]]
Specify slopes at beginning and end of curve. Slopes
not given are assumed to be zero. Without the -s
switch, slopes are determined from other information.
If only one slope is to be specified, the other can be
given as "n" (for "natural"). The -s and -c switches
cannot be used together.
-t num Specify tension in interpolating curve. Tension of 50 gives
almost polygonal line, tension of .01 gives almost cubic
spline. Tension must be positive. Default is 1.
-x [min [max]]
Interpolate from min to max only. min and max should
be in the range of the given x values, except that if
the -c switch is used they should satisfy 0 <= min <
max <= 1.
-xl take log of x values before interpolating, take exponential
afterwards (probably necessary if -xl switch is needed for
GRAPH)
-yl take log of y values before interpolating, take exponential
afterwards (probably necessary if -yl switch is needed for
GRAPH)
-zl take log of z values before interpolating, take exponential
afterwards (implies -3)
-xt -yt -zt take tanh of x, y, or z values before interpolating,
take arc tanh afterwards. Data values are restricted
to (0, 1). (-zt implies -3).
-3 3D curve: each input line has an x, y, and z
NOTES
Inspired by the Unix routine, but afflicted with creeping
featuritis.
REFERENCES
A. K. Cline, "Scalar- and Planar- Valued Curve Fitting Using
Splines Under Tension", Communications of the ACM v 17 n 4 p
218-223 (Apr 74).
Schweikert, D. G. "An interpolation curve using a spline in
tension", J. Math. and Physics v 45 p 312-317 (1966).
SEE ALSO
GRAPH, SMOOTH, DOTS
AUTHOR
Copyright (c) 1985 - 1992 James R. Van Zandt
Resale forbidden, copying for personal use encouraged.