Setup Menus in Admin Panel

  • LOGIN
  • No hay productos en el carrito.

Sólido de Escher: Animación en LaTeX2e

Te comparto el código fuente para generar una animación del sólido de Escher.

¿Cómo elaborar una animación en LaTeX2e?

Aquí te comparto el código fuente de una animación sencilla del sólido de Escher.

A continuación te explico grosso modo el código.

Utilizo un Beamer para el documento. Los paquetes que se requieren para generar la animación son animate, ifthen. La figura la elaboro usando TikZ y para que se pueda dar la perspectiva de tercera dimensión utilizo el paquete TikZ-3dplot.

En los comentarios indico el nombre del archivo y después una muy breve descripción del documento generado por este código fuente. También, para tener un registro, indico la fecha en que se creó el documento, la última vez que lo modifiqué, mi nombre para aparecer como el autor del código fuente y los términos de uso bajo los cuales comparto el código fuente.

Ok. Va el código que genera la figura. El contador c sirve para tener control del número de frame (fotografía, si así lo quieres ver) de la animación. Este valor se utiliza en la instrucción \tdplotsetmaincoords{#}{#} del paquete TikZ-3dplot para dar la sensación de que la figura va girando. La macro (variable) \escala sirve para cambiar el tamaño del poliedro modificando este valor.

La instrucción \whiledo{} se define en el paquete ifthen. Con esta instrucción genero un ciclo para ir cambiando el valor del contador c, desde c = 0 hasta c = 359. Para generar la figura, primero defino los 18 vértices del poliedro. Después los muestro usando la instrucción \foreach del paquete TikZ. Después trazo todas las caras del poliedro. En realidad, no relleno las caras, únicamente trazo las aristas. Dejé así el código por si quieres jugar rellenando las caras del poliedro y ponerlas de distintos colores y ver la ubicación de cada cara. Te puedes dar cuenta fácilmente con los vértices de cada cara cuál es la que estás modificando.

Después de trazar el poliedro, incremento el contador c. Con la instrucción \ifthenelse{}{} decido si se debe generar una nueva frame de la animación o si debo finalizarla. Para terminar, finalizo la frame (diapositiva) del documento de Beamer.

Muchas gracias por respetar los términos de uso de este código fuente.

\documentclass[10pt,aspectratio=169]{beamer}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{ifthen}
\usepackage{animate}
% Beamer
\usetheme{Warsaw} 
\usecolortheme{whale}
\author{Efraín Soto Apolinar}
\title{www.aprendematematicas.org.mx}
%
% Nombre de archivo: Poliedro-Animacion.tex
% Descripción: 
% Se representa geométricamente el sólido de Escher.
% 
% Fecha de creación: 18 de Mayo de 2021.
% Fecha de última modificación: 18 de Mayo de 2021.
% Autor: Efraín Soto Apolinar.
% https://www.aprendematematicas.org.mx/author/efrain-soto-apolinar/instructing-courses/
% Términos de uso:
% https://creativecommons.org/licenses/by-nc-sa/4.0/
% Muchas gracias por respetar los términos de uso.
%
\newcounter{c}
\setcounter{c}{0}
%
\begin{document}
%
%
%
\begin{frame}[fragile]{Vértices del Sólido de Escher}{}{}
\begin{center}
\begin{animateinline}[loop, poster = first, controls]{20}
%
\whiledo{\thec<359}{
	%
	\tdplotsetmaincoords{80}{\thec}
	%
\begin{tikzpicture}[tdplot_main_coords]
	%
	\pgfmathsetmacro{\escala}{4.0}
	%
	% Coordenadas de los vértices
	%
	\coordinate(1) at (\escala*0., \escala*0., -\escala*0.57735);
	\coordinate(2) at (\escala*0., \escala*0., \escala*0.57735);
	\coordinate(3) at (\escala*0., -\escala*0.816497, \escala*0.);
	\coordinate(4) at (\escala*0., \escala*0.816497, \escala*0.);
	\coordinate(5) at (-\escala*0.816497, \escala*0., \escala*0.);
	\coordinate(6) at (-\escala*0.408248, -\escala*0.408248, \escala*0.);
	\coordinate(7) at (-\escala*0.408248, -\escala*0.408248, -\escala*0.57735);
	\coordinate(8) at (-\escala*0.408248, -\escala*0.408248, \escala*0.57735);
	\coordinate(9) at (-\escala*0.408248, \escala*0.408248, \escala*0.);
	\coordinate(10) at (-\escala*0.408248, \escala*0.408248, -\escala*0.57735);
	%
	\coordinate(11) at (-\escala*0.408248, \escala*0.408248, \escala*0.57735);
	\coordinate(12) at (\escala*0.408248, -\escala*0.408248, \escala*0.);
	\coordinate(13) at (\escala*0.408248, -\escala*0.408248, -\escala*0.57735);
	\coordinate(14) at (\escala*0.408248, -\escala*0.408248, \escala*0.57735);
	\coordinate(15) at (\escala*0.408248, \escala*0.408248, \escala*0.);
	\coordinate(16) at (\escala*0.408248, \escala*0.408248, -\escala*0.57735);
	\coordinate(17) at (\escala*0.408248, \escala*0.408248, \escala*0.57735);
	\coordinate(18) at (\escala*0.816497, \escala*0., \escala*0.);
	%
	% Los vértices del poliedro
	%
	\foreach \punto in {1,2,...,18}{
		\fill[blue] (\punto) circle (1.5pt) node [above] {\tiny$\punto$};
	}
	%
	% Las caras del poliedro
	%
	\draw[help lines]  (10) -- (6) -- (11) -- cycle;
	\draw[help lines]  (15) -- (10) -- (11) -- cycle;
	\draw[help lines]  (13) -- (10) -- (15) -- cycle;
	\draw[help lines]  (14) -- (13) -- (15) -- cycle;
	\draw[help lines]  (13) -- (14) -- (6) -- cycle;
	\draw[help lines]  (6) -- (14) -- (11) -- cycle;
	\draw[help lines]  (11) -- (14) -- (15) -- cycle;
	\draw[help lines]  (10) -- (13) -- (6) -- cycle;
	\draw[help lines]  (17) -- (12) -- (16) -- cycle;
	\draw[help lines]  (12) -- (17) -- (8) -- cycle;
	\draw[help lines]  (8) -- (7) -- (12) -- cycle;
	\draw[help lines]  (7) -- (16) -- (12) -- cycle;
	\draw[help lines]  (9) -- (8) -- (17) -- cycle;
	\draw[help lines]  (8) -- (9) -- (7) -- cycle;
	\draw[help lines]  (7) -- (9) -- (16) -- cycle;
	\draw[help lines]  (9) -- (17) -- (16) -- cycle;
	\draw[help lines]  (3) -- (2) -- (5) -- cycle;
	\draw[help lines]  (3) -- (5) -- (1) -- cycle;
	\draw[help lines]  (1) -- (5) -- (4) -- cycle;
	\draw[help lines]  (1) -- (4) -- (18) -- cycle;
	\draw[help lines]  (5) -- (2) -- (4) -- cycle;
	\draw[help lines]  (2) -- (18) -- (4) -- cycle;
	\draw[help lines]  (2) -- (3) -- (18) -- cycle;
	\draw[help lines]  (18) -- (3) -- (1) -- cycle;
	\node[below] at (0,0,0) {\thec};
	\end{tikzpicture}
	%
	\stepcounter{c}
	%
	\ifthenelse{\thec<359}{
		\newframe
	}{
		\end{animateinline}\relax
	}
}
\end{center}
\end{frame}
%
%
%
\end{document}

El resultado final se ve así.

Si aún no conoces LaTeX2e, te invito a aprenderlo con nuestro curso en línea gratuito, titulado LaTeX2e para principiantes.

febrero 1, 2022

0 responses on "Sólido de Escher: Animación en LaTeX2e"

    Leave a Message

    Tu dirección de correo electrónico no será publicada.

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

    A+
    X