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.