Parallel Curves and Evolutes
by Adrian Mariano
email adrian@u.washington.edu
This package was developed during the Summer of 1991 when I attended
an NSF sponsored summer research. A paper describing the various
curves should be available from the Geometry Center (geom.umn.edu).
ParallelCurves.m
This package draws pictures related to parallel curves.
If gamma is a parametrically defined curve, and N is its normal, then
the parallel curves are
gamma + r N
where r is a scalar.
The evolute is defined as
gamma + N/kappa
where kappa is the curvature of gamma.
The evolute is the set of all the cusps in all the parallel curves.
It is also the envelope of the lines normal to the curve.
CONVENTIONS
Surrounding an option with < > signs indicates that it is optional.
Many functions take a plotrange as an argument. This is the section of
the graph to plot, and is of the form {{xmin, xmax}, {ymin, ymax}}.
FUNCTIONS
ParallelCurves[{fx,fy}, <{dfx, dfy}> , {u, umin, umax, ustep},
plotrange, {tmin, tmax, tstep}, ]
Plots a sequence of parallel curves. The curves are plotted on
separate graphs, and nothing is returned by the function. {fx,fy}
should parametrically specify a curve in terms of u as u ranges from
umin to umax. The variable ustep indicates the sampling frequency.
These curves are defined by {fx,fy} + t N where N is a normal vector
to {fx,fy}. If {dfx, dfy} is supplied, it is used as the tangent to
{fx,fy}. If not, then the tangent is computed symbolically. Any
series of extra parameters at the end of the invocation will be passed
on to ListPlot. This function returns nothing.
ParallelCurvesOverlay
This function has exactly the same parameters as ParallelCurves, but
combines the curves on one graph, displays the graph, and returns the
graphics object.
ParallelCurves3D[{fx,fy}, {u, umin, umax, }, plotrange,
{zmin, zmax, }, ]
This function is similar to the two previous functions, but it stacks
the graphs to form a three-dimensional surface. The z range specifies
which curves will be used, and graphoptions is passed on to
ParametricPlot3D.
Evolute[{fx, fy}, t, < Simplify->False >]
Given {fx, fy} a parametrized curve in t, Evolute returns an
expression for the evolute of the curve. Turning off simplification
will disable internal calls to Mathematica's Simplify and TrigReduce
functions.
GraphEvolute[{fx, fy}, {t, tmin, tmax}, < GraphOpts >]
Graph the evolute of the curve specified parametrically, passing
GraphOpts to ParametricPlot.
Ellipsoid[a, b, c, phi, theta]
Returns the equation for an ellipsoid of semiaxes a, b, and c:
{a Sin[theta] Cos[phi], b Sin[theta] Sin[phi], c Cos[phi] }
ParallelSurfaces[{fx,fy,fz}, {u, umin, umax, ustep}, {v, vmin, vmax, vstep},
PlotRange, {tmin, tmax, tcount}, ]
Draws the surfaces parallel to the surface specified parametrically in
{fx,fy,fz} as a function of u and v. ParallelSurfaces Displays a
sequence of graphs, but returns nothing.
NormalLines[{fx,fy}, {t, tmin, tmax, tstep}, plotrange, ]
Draws lines normal to the curve {fx,fy}, with spacing defined by tstep.
GraphOpts is passed to Show.