sample cycloid code

> cycloid := proc(len, spoke_len, num_frames)
local cyc, baseline, pict, dots, picts, t, r ;
r := spoke_len;
cyc := (t, r)->[t-r*sin(t), 1-r*cos(t)]:
baseline := line([-2,0], [15,0]):
pict := []:
dots := []:
picts := []:

for t from 0 by evalf(len)/num_frames to evalf(len)
do
dots := [op(dots), cyc(t,r)];
pict := [ baseline, curve(dots, style = POINT),
disk([t,1],1, color = white),
line([t,1], cyc(t, r),color = black, thickness = 2)];
picts := [op(picts),display(pict)];
od:
display(picts, scaling = constrained, insequence = true, axes = none);
end:

> cycloid(6*Pi,2, 40);