input courbes; vardef rvecteur(expr x,y) = (x,y) xscaled unitex yscaled unitey enddef; vardef fx(expr t) = (1-cosd(t))*cosd(t) enddef; vardef fy(expr t) = (1-cosd(t))*sind(t) enddef; path cardioide; beginfig(1); % Le repère à priori repere(15cm,15cm,4cm,2cm,1cm,1cm); % Le chemin définissant la cardioïde cardioide := ftrace(0,360,100) en_place; % La base de roulement draw ((-3,0)--(11,0)) en_place withpen pencircle scaled 2pt; % La cardioïde qui roule et la trajectoire du point de % rebroussement. for i=0 upto 36: draw cardioide rotatedaround (rpoint(fx(10*i),fy(10*i)),-(15*i)) shifted rvecteur(4*(1-cosd(5*i))-fx(10*i),-fy(10*i)); draw rpoint(0,0) rotatedaround (rpoint(fx(10*i),fy(10*i)),-(15*i)) shifted rvecteur(4*(1-cosd(5*i))-fx(10*i),-fy(10*i)) withpen pencircle scaled 4pt withcolor red; endfor; endfig; end