Saltar al contenido

¿Cómo puedo animar un dibujo de TikZ en beamer?

Basta ya de buscar en otros sitios ya que has llegado al lugar correcto, poseemos la respuesta que buscas sin complicaciones.

Solución:

En este caso, se puede realizar un acercamiento con el paquete animado y el rotate around=:TikZ-opción. Si su objetivo es una presentación, puede utilizar el beamer clase de documento y si no puede utilizar otras clases.

El paquete animado se puede invocar con varias opciones, s. págs. 3-4 de la documentación del paquete. De todos los comandos el multiframe uno permite bucles alrededor de imágenes, como TikZ imágenes. Sin embargo, este comando debe estar rodeado de beginanimateinline y endanimateinlinemedio ambiente (o por cualquiera de los newframe variantes), sp 5.

usepackagetikz
usepackage[options]animate
%...
%...
  beginanimateinline[options]............
    multiframe[]
       loop body
    
  endanimateinline

El medio ambiente también tiene otras opciones, s. págs. 7-10, Capítulo 6. Entre otros:

  • loop: “La animación se reinicia inmediatamente después de llegar al final”.
  • autoplay: “Iniciar la animación después de que se haya abierto la página”.
  • controls: “Inserta botones de control debajo del widget de animación”.
  • palindrome : “La animación se reproduce continuamente hacia adelante y hacia atrás”

El comando multiframe tiene tres argumentos:

  1. number of frames: el número máximo de iteraciones / fotogramas.
  2. variables: incremento de iteración en la forma:
    =+
  3. loop body : código con y / o sin variables. Aquí puedes definir tu tikzpicture medio ambiente.

Nota

“A diferencia de ‘pspicture’, el entorno ‘tikzpicture’ es capaz de determinar su tamaño a partir de los objetos gráficos que contiene. Sin embargo, esto puede resultar en marcos de diferentes tamaños de una secuencia, según el tamaño y la posición de los objetos gráficos. Por lo tanto, Para garantizar que todos los fotogramas de la secuencia se muestren a la misma escala en el widget de animación, los fotogramas deben compartir un cuadro delimitador común. Se puede proporcionar un cuadro delimitador mediante un objeto ‘rectángulo’ invisible “, sp10 :

begintikzpicture
   useasboundingbox (... , ...) rectangle (... , ...);
endtikzpicture

O puede agregar nodos fantasmas para el mismo propósito.

Finalmente, la dirección del stick se puede cambiar con un if-then declaración utilizando el paquete ifthen:

ifthenelseboolean conditionthen clauseelse clause

Una posible solución viene dada por el siguiente MWE:

documentclassbeamer
usepackagetikz
usepackageanimate
usepackageifthen
definecolordarkgreenRGB10,90,10

begindocument
    beginframe
        beginanimateinline[controls,loop]50
            multiframe180rt=-45+1%
                begintikzpicture
                ifthenelsert < 45
                draw[rounded corners,fill=cyan,rotate around=180-rt:(2,0.2)] (0,0) rectangle (4,0.4);draw [fill=white] (2,0.2) circle (1mm);draw[fill=darkgreen] (2,0.2) circle (0.5mm);
                draw[rounded corners,fill=darkgreen,rotate around=90+rt:(2,0.2)] (0,0) rectangle (4,0.4);draw [fill=white] (2,0.2) circle (1mm);draw[fill=cyan] (2,0.2) circle (0.5mm);;
%               draw [fill=black] (2,0.2) circle (1mm);
                %the following lines are not meant to be on the animation
                draw [>=stealth,->,very thick] ([shift=(175:2.15)]2,0.2) arc (175:135:2.15) node[xshift=-5pt,left] $+45^circ$;
                draw [>=stealth,->,very thick] ([shift=(185:2.15)]2,0.2) arc (185:225:2.15) node[xshift=-5pt,left] $-45^circ$;
                node at (4.0,4.0) ; %phantom node
                node at (-4.0,-4.0) ; %phantom node
                endtikzpicture%
        endanimateinline
    endframe 
enddocument

ingrese la descripción de la imagen aquí

No pensé que esta respuesta tuviera más de 3 reputaciones …

import animate;
import roundedpath;
settings.tex="pdflatex"; 
animation Ani;
unitsize(1cm);
path roundedbox=roundedpath(box((0,0),(4,0.4)),0.15);
path Arc=reverse(arc((2,0.2),2.15,135,175));
draw(Label("$+45^circ$",Relative(.9),LeftSide),Arc,Arrow);
draw(Label("$-45^circ$",Relative(.9)),reflect((2,0.2),(2.1,0.2))*Arc,Arrow);
for(int a=0; a<=45;++a)

save();
filldraw(rotate(-a,(2,0.2))*roundedbox,cyan);
dot((2,0.2),linewidth(3bp));
Ani.add();
restore();

for(int a=44; a >=-45; --a)

save();
filldraw(rotate(-a,(2,0.2))*roundedbox,red);
dot((2,0.2),linewidth(3bp));
Ani.add();
restore();

for(int a=44; a>0;--a)

save();
filldraw(rotate(a,(2,0.2))*roundedbox,blue);
dot((2,0.2),linewidth(3bp));
Ani.add();
restore();

erase();
Ani.movie(BBox(Fill(white)));

ingrese la descripción de la imagen aquí

Solo para el propósito de comparar con Asymptote.

import animate;
settings.tex="pdflatex"; 
animation Ani;
unitsize(1cm);
for(int a=0; a<=45;++a)

save();
filldraw(rotate(-a,(2,0.2))*box((0,0),(4,0.4)),cyan);
dot((2,0.2));
Ani.add();
restore();

for(int a=44; a >=-45; --a)

save();
filldraw(rotate(-a,(2,0.2))*box((0,0),(4,0.4)),cyan);
dot((2,0.2));
Ani.add();
restore();

for(int a=44; a>=0;--a)

save();
filldraw(rotate(a,(2,0.2))*box((0,0),(4,0.4)),cyan);
dot((2,0.2));
Ani.add();
restore();

erase();
Ani.movie(BBox(Fill(white)));

ingrese la descripción de la imagen aquí

Con PSTricks – mi primera herramienta dibujandog (se convierte de mi Asymptote a PSTricks).

¡Utilizo https://ezgif.com/pdf-to-gif para convertir mi PDF a gif!

documentclass[pstricks,border=15pt]standalone
usepackagepstricks-add
begindocument
newcommandPicture[2]
beginpspicture[showgrid](-1,-2)(5,2)
psrotate(2,0.2)#1psframe[fillcolor=#2,fillstyle=solid,framearc=0.5](0,0)(4,0.4)
psarc->(2,0.2)2.15185225
psarcn->(2,0.2)2.15175135
psdot(2,0.2)
rput(0,1.75)$+45^circ$
rput(0,-1.5)$-45^circ$
endpspicture%

multidoi=0+146%
  Picture-icyan

multidoi=-44+190%
Pictureired

multidoi=44+-144%
Pictureiblue

enddocument

De PSTricks code above, He decidido usar Asymptote para reemplazar eso !!!

ingrese la descripción de la imagen aquí

Si te ha sido de provecho nuestro post, agradeceríamos que lo compartas con otros seniors y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *