Insertion d'animation dans un document LaTeX

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
boubamane
Messages : 52
Enregistré le : jeu. 23 févr. 2012, 01:03

Insertion d'animation dans un document LaTeX

Message non lu par boubamane » ven. 20 janv. 2017, 00:37

Bonsoir,

Avec l'aide de Chellier sur http://forum.mathematex.net/asymptote-f ... 16718.html, j'ai obtenu ce code que je veux introduire dans un document \LaTeX.

Code : Tout sélectionner

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[frenchb]{babel}
\usepackage{asymptote}
\usepackage{asymptote}
\begin{document}

Du texte \dots

\begin{figure}
\centering
\begin{asy}
    import geometry;
    import animate;
    settings.tex="pdflatex";
    settings.outformat="pdf";

    size(11cm);

    pen p = linetype("4 4"); // pointillés plus petits
    marker croix = marker(scale(4)*cross(4),linewidth(bp)); // croix des points

    transform ref = reflect(Ox); // symétrie axiale par rapport à (Ox)
    point O = (0,0), A = (3,1), B = ref*A;
    line om = line(O,false,(1,0)), // demi-droite (false en O)
         oa = line(O,false,A), ob = line(O,false,B);

    animation MonAnim;

    markangle(B,O,A,bp+deepgreen,Fill(palegreen));
    draw("$O$",O,1.5W,croix);
    draw(om, bp+red);
    draw(oa^^ob,linewidth(bp));
    draw((0,-2)--(5,2),invisible); // pour que la figure ait des dimensions fixes

    MonAnim.add();

    // jouer sur l'incrémentation de i et delay pour la fluidité et le poids du fichier
    for(real i=.6; i<4.5; i=i+.05) {
      save();
      point M=relpoint(Ox,i), A=projection(oa)*M, B=projection(ob)*M;
      draw(A--M--B,p+bp,StickIntervalMarker(2,2,linewidth(bp)));
      markrightangle(O,A,M,2bp+deepgreen,Fill(palegreen));
      markrightangle(M,B,O,2bp+deepgreen,Fill(palegreen));
      draw("$A$",A,1.5N,croix);
      draw("$B$",B,1.5S,croix);
      draw("$M$",M,1.5NE,croix);
      MonAnim.add();
      restore();
    }

    erase(); // pour éviter les "décalages"
    //MonAnim.movie(); // pdf multipage
    label(MonAnim.pdf("controls",delay=100)); // pdf avec boutons de contrôle
\end{asy}
\caption{Propriété de la bissectrice d'un angle}
\end{figure}

Du texte \dots
\end{document}
Comment fait-on pour avoir l'animation à partir du ficher d'extension tex ?
PC: Ubuntu 14.4 - Asymptote 2.35 - gedit & texmaker - Texlive 2018

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: Insertion d'animation dans un document LaTeX

Message non lu par GM » mer. 25 janv. 2017, 18:33

Bonsoir,
je découvre ce problème vieux de 5 jours donc, comme je suis un peu débordé, je vais d'abord demander s'il est réglé avant de faire des tests.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

boubamane
Messages : 52
Enregistré le : jeu. 23 févr. 2012, 01:03

Re: Insertion d'animation dans un document LaTeX

Message non lu par boubamane » jeu. 26 janv. 2017, 01:52

Je suis inondé par des copies à corriger. Je n'ai malheureusement pas pu y revenir. Le problème demeure entier.
PC: Ubuntu 14.4 - Asymptote 2.35 - gedit & texmaker - Texlive 2018

OG
V.I.P.
V.I.P.
Messages : 142
Enregistré le : dim. 7 mars 2010, 22:27

Re: Insertion d'animation dans un document LaTeX

Message non lu par OG » jeu. 26 janv. 2017, 18:35

Bonsoir

Je n'ai pas de copies à corriger :) mais pas beaucoup de temps non plus (j'ai d'ailleurs une ou deux
figures asymptote à faire).

La doc contient cet exemple.

Code : Tout sélectionner

\documentclass{article}
\usepackage[inline]{asymptote}
%\usepackage{asymptote}
\usepackage{animate}
\begin{document}

Here is an inline PDF movie, generated with the commands
\begin{verbatim}
pdflatex inlinemovie
asy inlinemovie-*.asy
pdflatex inlinemovie
\end{verbatim}
or equivalently,
\begin{verbatim}
latexmk -pdf inlinemovie
\end{verbatim}

\begin{center}
\begin{asy}
import animate;
animation A=animation("movie1");
real h=2pi/10;

picture pic;
unitsize(pic,2cm);
for(int i=0; i < 10; ++i) {
  draw(pic,expi(i*h)--expi((i+1)*h));
  A.add(pic);
}
label(A.pdf("controls",delay=50,keep=!settings.inlinetex));
\end{asy}
%Uncomment the following line when not using the [inline] package option:
%\ASYanimategraphics[controls]{50}{movie1}{}{}
\end{center}
And here is another one, clickable but without the control panel:
\begin{center}
\begin{asy}
import animate;
animation A=animation("movie2");
real h=2pi/10;

picture pic;
unitsize(pic,2cm);
for(int i=0; i < 10; ++i) {
  draw(pic,expi(-i*h)--expi(-(i+1)*h),red);
  A.add(pic);
}
label(A.pdf(keep=!settings.inlinetex));
\end{asy}
%Uncomment the following line when not using the [inline] package option:
%\ASYanimategraphics[controls]{10}{movie2}{}{}
\end{center}

\end{document}

Inclure le code directement de Christophe ne marchera pas (j'ai testé). Comme je n'ai pas Acrobat Reader
je ne peux pas tester plus. J'ai modifié le fichier pour avoir une cohérence avec inlinemovie.tex de la doc,
en ajoutant un picture pic.... Là j'ai un pdf avec le "panel control", mais je ne sais pas si l'animation est correcte.
Sous toute réserve (2nde essai) il faut
1) modifier le .asy de l'animation en spécifiant

Code : Tout sélectionner

label(MonAnim.pdf("controls",delay=100,keep=!settings.inlinetex));
cela permet en fait de garder certains fichiers, _nom_du_fichier.pdf

Ensuite il faut tout simplement placer dans le fichier LaTeX

Code : Tout sélectionner

\ASYanimategraphics[controls]{50}{nom_du_fichier}{}{}
Edit (2ème) : si on préfère que l'animation reste dans le fichier LaTeX, voici une solution. Si le document
contient plusieurs animations, il est utile de les nommer. Voici le code, il faut ajouter l'option
[inline] au paquet asymptote.

Code : Tout sélectionner

\documentclass{article}

\usepackage[inline]{asymptote}
\usepackage{animate}
\begin{document}


\begin{asy}
import geometry;
import animate;
//settings.tex="pdflatex";
//settings.outformat="pdf";

animation AA=animation("MonAnim");
//animation MonAnim ;
//picture pic;
size(11cm);

pen p = linetype("4 4"); // pointillés plus petits
marker croix = marker(scale(4)*cross(4),linewidth(bp)); // croix des points

transform ref = reflect(Ox); // symétrie axiale par rapport à (Ox)
point O = (0,0), A = (3,1), B = ref*A;
line om = line(O,false,(1,0)), // demi-droite (false en O)
oa = line(O,false,A), ob = line(O,false,B);



markangle(B,O,A,bp+deepgreen,Fill(palegreen));
draw("$O$",O,1.5W,croix);
draw(om, bp+red);
draw(oa^^ob,linewidth(bp));
draw((0,-2)--(5,2),invisible); // pour que la figure ait des dimensions fixes

AA.add();

// jouer sur l'incrémentation de i et delay pour la fluidité et le poids du fichier
for(real i=.6; i<4.5; i=i+.05) {
save();
point M=relpoint(Ox,i), A=projection(oa)*M, B=projection(ob)*M;
draw(A--M--B,p+bp,StickIntervalMarker(2,2,linewidth(bp)));
markrightangle(O,A,M,2bp+deepgreen,Fill(palegreen));
markrightangle(M,B,O,2bp+deepgreen,Fill(palegreen));
draw("$A$",A,1.5N,croix);
draw("$B$",B,1.5S,croix);
draw("$M$",M,1.5NE,croix);
AA.add();
restore();
}

erase(); // pour éviter les "décalages"
//MonAnim.movie(); // pdf multipage
label(AA.pdf("controls",delay=100,keep=!settings.inlinetex)); // pdf avec boutons de contrôle
\end{asy}
\end{document}

En fait une animation consiste juste en n fichiers pdf, chacun constituant une image. Le paquet animate
se charge de traduire en langage pdf. Le fichier _MonAnim.pdf contient ces n images.


Bon courage
O.G.

Répondre