with(plots):
a:=0:b:=2*Pi:n:=4:
x0:=(1+cos(t))*cos(t):
y0:=(1+cos(t))*sin(t):
dx0:=diff(x0,t):dy0:=diff(y0,t):ds0:=sqrt(simplify(dx0^2+dy0^2));
ds0:=2*cos(t/2):
x:=simplify(x0-d/ds0*dy0);y:=simplify(y0+d/ds0*dx0);
combine(x);combine(y);
cardio:=plot([x0,y0,t=a..b],color=blue,thickness=2):
anime:=display(seq(plot([x,y,t=0..4*Pi],color=red),d=seq(k/n,k=1..2*n)),insequence=true):
n:=10:
display(cardio,anime,axes=none,scaling=constrained);