2003 December
Xah Lee
 xah@xahlee.org
 http://xahlee.org/PageTwo_dir/more.html

a study on what happens when two motions are combined.

ellip::usage = "ellip[alpha,a,b,p] returns a function of one variable \
that is a ellipse with horizental axis length a and vertical b, rotated alpha \
radians, around the origin, and has a period of p. Example: \
ellip[0,1,2,1]@t"
Clear@ellip;
ellip[α_, a_, b_, p_] := 
      Function@Evaluate[{{Cos@α, -Sin@α}, {Sin@α, 
                Cos@α}} . {a*Cos@(#*2*Pi/p), 
              b*Sin@(#*2*Pi/p)}]

combine::usage = "combine[f1,f2] returns a function that is a \
parametric curve of f2 as argument to f1. f1@t or f2@t must return a \
parametric curve of the form {a,b}. Example: combine[{#,#^2}&,{Sin@#,Cos@#}&]\
"
Clear@combine;
combine[f1_, f2_] := 
      Function[tt, 
        Evaluate@
          Module[{e1 = f1@tt, e2 = f2@tt}, {First@e1 /. tt -> First@e2, 
              Last@e1 /. tt -> Last@e2}]]

examples

f1 = ellip[1, 1, 3, 1];
f2 = ellip[0,  .2, 1,  .3];
ParametricPlot[Evaluate@{f1@t, f2@t}, {t, 0,  .8}, 
        AspectRatio -> Automatic];
ParametricPlot[f1@t + f2@t, {t, 0, 9}, AspectRatio -> Automatic, 
      PlotPoints -> 150]

f1 = ellip[1, 1, 3, 1];
f2 = ellip[0,  .2,  .2,  .04];
ParametricPlot[Evaluate@{f1@t, f2@t}, {t, 0,  .8}, 
        AspectRatio -> Automatic];
ParametricPlot[f1@t + f2@t, {t, 0, 9}, AspectRatio -> Automatic, 
      PlotPoints -> 150]

f1 = ellip[1, 1, 3,  .04];
f2 = ellip[0,  .2,  .2, 1];
ParametricPlot[Evaluate@{f1@t, f2@t}, {t, 0,  .8}, 
        AspectRatio -> Automatic];
ParametricPlot[f1@t + f2@t, {t, 0, 1}, AspectRatio -> Automatic, 
      PlotPoints -> 250]

f1 = ellip[1, 1, 3, 1];
f2 = ellip[0,  .2,  .2,  .3];
f3 = ellip[2,  .2, 1,  .05];
ParametricPlot[Evaluate@{f1@t, f2@t}, {t, 0,  .8}, 
        AspectRatio -> Automatic];
ParametricPlot[f1@t + f2@t + f3@t, {t, 0, 9}, 
      AspectRatio -> Automatic, PlotPoints -> 150]