> with(plots); -1
 

> Cycloid := animatecurve([t-sin(t), 1-cos(t), t = 0 .. 4*Pi], color = blue, scaling = constrained, frames = 20); -1
Cycloid := animatecurve([t-sin(t), 1-cos(t), t = 0 .. 4*Pi], color = blue, scaling = constrained, frames = 20); -1
 

> Wheel := animate(plot, [[t+cos(theta), 1+sin(theta), theta = 0 .. 2*Pi], color = red], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
Wheel := animate(plot, [[t+cos(theta), 1+sin(theta), theta = 0 .. 2*Pi], color = red], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
Wheel := animate(plot, [[t+cos(theta), 1+sin(theta), theta = 0 .. 2*Pi], color = red], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
 

> PointOnRim := animate(plot, [[t-sin(t)+.1*cos(theta), 1-cos(t)+.1*sin(theta), theta = 0 .. 2*Pi], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
PointOnRim := animate(plot, [[t-sin(t)+.1*cos(theta), 1-cos(t)+.1*sin(theta), theta = 0 .. 2*Pi], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
PointOnRim := animate(plot, [[t-sin(t)+.1*cos(theta), 1-cos(t)+.1*sin(theta), theta = 0 .. 2*Pi], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
 

> Spoke := animate(plot, [[s*t+(1-s)*(t-sin(t)), s+(1-s)*(1-cos(t)), s = 0 .. 1], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
Spoke := animate(plot, [[s*t+(1-s)*(t-sin(t)), s+(1-s)*(1-cos(t)), s = 0 .. 1], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
Spoke := animate(plot, [[s*t+(1-s)*(t-sin(t)), s+(1-s)*(1-cos(t)), s = 0 .. 1], color = black], t = 0 .. 4*Pi, frames = 20, scaling = constrained); -1
 

> Surface := plot(0, t = -1 .. 4*Pi+1, color = black); -1
 

> display(Surface, Cycloid, Wheel, PointOnRim, Spoke, axes = boxed); 1
 

Plot 

>