Dans les boucles, elle est ajoutée à chaque pas (puisqu'effacée à la fin de chaque pas : erase();).
N'y aurait-il pas moyen de dessiner l'animation "au-dessus", et donc de ne pas être obligé de la rajouter à chaque fois ?
Code : Tout sélectionner
import graph_pi;
import animate;
settings.tex="pdflatex";
settings.outformat="pdf";
usepackage("fourier","upright");
real f(real x) {return cos(x);}
path Cf1=graph(f,0,pi,n=400);
path Cf2=graph(f,-pi,pi,n=400);
path Cf3=graph(f,pi,3pi,n=400);
transform sc=scale(.8);
pen pinit=1.2bp+magenta, pf=1.2bp+.8blue, pvec=bp+deepgreen;
picture pic;
void trace(path f, pen p,
Label L="", real r=0, real per=2pi, pair NS=(0,0),
pen pv=nullpen, arrowbar arrow=Arrow(HookHead,2mm)){
draw(f,p);
if (NS!=(0,0))
draw(Label(sc*L,Fill(white),align=NS),(r,f(r))--(r+per,f(r+per)),pv,arrow);
}
graphicrules(xunit=1cm, yunit=1cm, xmin=-3pi, xmax=3pi, ymin=-1.5, ymax=1.5);
add(millimeterpaper(p=1bp+orange),(0,0));
labeloij(Lo=sc*"$O$", Li=sc*"$\overrightarrow{\imath}$", Lj=sc*"$\overrightarrow{\jmath}$");
cartesianaxis(xticks=Ticks(sc*Label(Fill(white)),
labelfrac(factor=pi,symbol="\pi",symbolin=true,
zero=false),Step=pi/2, ptick=black),
yticks=Ticks(sc*Label(Fill(white)),
labelfrac(zero=false),Step=1,step=.5));
pic.add(currentpicture);// Sauvegarde de l'image fixe dans pic
animation A;
// --------------------------------------------------------------------------
for (real p=-1; p<=1; p+=.1) {
add(pic); // Ajout de l'image fixe
trace(Cf1,pinit);
// ---------------------------------------
draw(xscale(-p)*Cf1,pinit);
A.add();
erase();
}
// --------------------------------------------------------------------------
for (real t=0; t<=2pi; t+=pi/25) {
add(pic);
trace(Cf2,pinit,"$2\pi \vec{\imath}$",.75,N,pvec);
// ---------------------------------------
draw(shift(t,0)*Cf2,pf);
A.add();
erase();
}
// --------------------------------------------------------------------------
for (real t=0; t<=2pi; t+=pi/25) {
add(pic);
trace(Cf2,pinit,"$2\pi \vec{\imath}$",.75,N,pvec);
trace(Cf3,pf,"$-2\pi \vec{\imath}$",-pi,-2pi,S,pvec);
// ---------------------------------------
draw(shift(-t,0)*Cf2,pf);
A.add();
erase();
}
label(A.pdf(delay=100,"controls"));
//A.movie();
Merci,
Christophe