Note

This Mathematica notebook is from the WWW project A Visual Dictionary of Special Plane Curves. Copyright © 1995-2000 by Xah Lee. (http://xahlee.org/)

Packages and Initializations

Needs["ParaPlot`"]
Needs["PlaneCurveFormulas`"]
Needs["PlaneCurveGenerator`"]

Needs["Graphics`ImplicitPlot`"]
(*MathSource Item:0200-529*)

trochoid parallels template

this is a template generating images of parallel curves of a trochoid curve for esthestics purposes. Change the parameters in the cell below, then evaluate the whole notebook.

The radius of the fixed circle is 1.
r is the radius of the rolling circle inside the fixed curve.
h is the distance of tracing point to the center of the rolling circle.
dMin and dMax is the range of distances parallel to the original curve. dStep determines how many parallels to plot.

tMin and tMax is range of curve parameter t, usually 0 to 2*Pi. But to avoid some ploting problems at cusp, sometimes use 0.001 to 2*Pi-0.0001.

parallels of hypotrochoid
Try:{r,  h,  dMin, dMax, dStep}=
    {1/3, .3, -1, 2, .25},
	{1/3, .1, -2, 2, .5},
	{1/3, 1, -2, 2, 4/15},
	{1/5, .13, -1, 2, .25},
	{1/5, .2, -1, 2, .25}

Clear[r, h, dMin, dMax, dStep, formulas]; 
{r, h} = {(1/5),  .2};
{dMin, dMax, dStep} = {-1, 
          2, (dMax - dMin)/12};
{tMin, tMax} = {0, 2*Pi} + 1;
tStep = (tMax - tMin)/200;

formulas = 
        Parallel[Hypotrochoid[1, r, h][t], t, 
          Range[dMin, dMax, dStep]];

original curve

ParaPlot[Hypotrochoid[1, r, h][t], {t, tMin, tMax}, 
      AspectRatio -> Automatic]

inner parellels. Plot one using curves, then plot it using dots. The dos version does not have plotting artifacts.

ParametricPlot[
        Evaluate[Take[formulas, {1, Floor@(Length[formulas]/2)}]], {t, 
          tMin, tMax}, AspectRatio -> Automatic, 
        PlotStyle -> 
          Table[Hue[i], {i, 0. , 1, 
              1/Floor@(Length[formulas]/
                      2)}]];
ParaPlot[Hypotrochoid[1, r, h][t], {t, tMin, 
          tMax, (tMax  -  tMin)/(5*30)}, 
        ParallelCurveOffset -> Table[i, {i, dMin, 0, dStep}], 
        PlotCurve -> True, AspectRatio -> Automatic, 
        Axes -> False, PlotDot -> False, 
        DotStyle -> Table[Hue[Random[]], {20}]];

outer parallels

ParametricPlot[
        Evaluate[
          Take[formulas, {Ceiling@(Length[formulas]/2), -1}]], {t, 
          tMin, tMax}, AspectRatio -> Automatic, 
        PlotStyle -> 
          Table[Hue[i], {i, 0. , 1, 
              1/Ceiling@(Length[formulas]/
                      2)}]];
ParaPlot[Hypotrochoid[1, r, h][t], {t, tMin, tMax, tStep}, 
      ParallelCurveOffset -> Table[i, {i, 0, dMax, dStep}], 
      PlotCurve -> True, AspectRatio -> Automatic, 
      Axes -> False, PlotDot -> False, 
      DotStyle -> Table[Hue[Random[]], {20}]]

e

One notices that the annoying straight line in the parallel curve caused by the cusps in the curve. Looking at the parallel curve formula, one notices there's complex numbers. I havn't looked into the math... but anyway here's a quick way to get rid of the lines by avoiding the parameters whre cusps occures. This we do by breaking 0 to 2*Pi into 5 segments, and plot each one.
Here's an example:

parallelsGP = 
        ReleaseHold@
          Map[Hold@
                ParametricPlot[
                  Evaluate@
                    Take[formulas, {Ceiling@(Length[formulas]/
                              2), -1}], #] &, (Join[{t}, #] &) /@ ((Partition[#, 2, 1] &)@Range[0, 2*Pi, 2*Pi/5])];

parallelsGP = First /@ parallelsGP;

Show[
      Graphics[{GrayLevel[1], 
            First@ParametricPlot[
                Evaluate@Hypotrochoid[1, r, h][t], {t, tMin, tMax}, 
                AspectRatio -> Automatic]}~Join~
          Transpose@{(Drop[#, -1] &)@
                Table[Hue@i, {i, 0, 1, 1/Length@First@parallelsGP}], 
              Transpose@parallelsGP}], AspectRatio -> Automatic, 
      Background -> GrayLevel@0]