├── Español ├── 0_instalacion │ ├── gnuLinux │ │ ├── INSTRUCCIONES.md │ │ └── gifs │ │ │ ├── carp.png │ │ │ ├── compilacion.gif │ │ │ ├── manimDescarga.png │ │ │ └── nom.png │ ├── macOS │ │ ├── INSTRUCCIONES.md │ │ └── gifs │ │ │ ├── DescargarManim.gif │ │ │ ├── DescargarSublimeText.gif │ │ │ ├── MacP1.gif │ │ │ ├── MacP2.gif │ │ │ ├── MacP3.gif │ │ │ ├── MacP4.gif │ │ │ ├── MacP5.gif │ │ │ ├── MacP6.gif │ │ │ ├── MacP7.gif │ │ │ ├── MacP8.gif │ │ │ ├── almacenamiento.png │ │ │ ├── pd.png │ │ │ └── terminal.png │ └── windows │ │ ├── INSTRUCCIONES.md │ │ └── gifs │ │ ├── wp1.png │ │ └── wp3.png ├── 1_formato_textos │ ├── ESCENAS.md │ ├── formato_textos.py │ └── gifs │ │ ├── Espejo.gif │ │ ├── Formula.gif │ │ ├── Fuentes.gif │ │ ├── PosicionPersonalizado1.gif │ │ ├── PosicionPersonalizado2.gif │ │ ├── PosicionRelativa1.gif │ │ ├── PosicionRelativa2.png │ │ ├── PosicionTextoCentro.gif │ │ ├── PosicionTextoDerecha.gif │ │ ├── PosicionTextoInferior.gif │ │ ├── PosicionTextoInferiorIzquierda.gif │ │ ├── PosicionTextoIzquierda.gif │ │ ├── PosicionTextoSuperior.gif │ │ ├── PosicionTextoSuperiorDerecha.gif │ │ ├── Rotacion.gif │ │ ├── Tamanhos.gif │ │ ├── TamanhosPersonalizados.gif │ │ ├── TextoAdd.gif │ │ ├── TextoMixto.gif │ │ ├── TextoMixto2.gif │ │ ├── TextoMixtoDisplay.gif │ │ └── TextoWrite.gif ├── 2_efectos_arreglos_texto │ ├── ESCENAS.md │ ├── efectos_arreglos_texto.py │ └── gifs │ │ ├── AparicionDesaparicionTexto1.gif │ │ ├── AparicionDesaparicionTexto2.gif │ │ ├── CambioTamanho.gif │ │ ├── ColorPorCaracter.gif │ │ ├── ColorPorCaracterCorregida.gif │ │ ├── ColorTexto.gif │ │ ├── ColoreadoTexto.gif │ │ ├── EfectoAparicionTexto1.gif │ │ ├── EfectoAparicionTexto2.gif │ │ ├── EfectoAparicionTexto3.gif │ │ ├── Encuadre1.gif │ │ ├── Encuadre2.gif │ │ ├── For2Variables.gif │ │ ├── ForLista.gif │ │ ├── ForRango1.gif │ │ ├── ForRango2.gif │ │ ├── FormulaColor1.gif │ │ ├── FormulaColor2.gif │ │ ├── FormulaColor3.gif │ │ ├── FormulaColor3Mejorada.gif │ │ ├── FormulaColor3Mejorada2.gif │ │ ├── FormulaColor4.gif │ │ ├── Llave.gif │ │ ├── Tachado1.gif │ │ └── Tachado2.gif ├── 3_transformaciones_texto │ ├── ESCENAS.md │ ├── gifs │ │ ├── AnimacionTamanho.gif │ │ ├── CambioColorTexto.gif │ │ ├── CambioPosicionTamanhoColorTexto.gif │ │ ├── CopiadoDosFormulas1.gif │ │ ├── CopiadoDosFormulas2.gif │ │ ├── CopiadoDosFormulas2Color.gif │ │ ├── CopiadoDosFormulas3.gif │ │ ├── CopiadoTextoV1.gif │ │ ├── CopiadoTextoV2.gif │ │ ├── CopiadoTextoV3.gif │ │ ├── CopiadoTextoV4.gif │ │ ├── MovimientoTexto.gif │ │ ├── TransformacionTexto1v1.gif │ │ ├── TransformacionTexto1v2.gif │ │ └── TransformacionTexto2.gif │ └── transformaciones_texto.py ├── 4_herramientas_visuales │ ├── ESCENAS.md │ ├── gifs │ │ ├── AnimacionLinea1.gif │ │ ├── AnimacionLinea2.gif │ │ ├── Flecha1.gif │ │ ├── Flecha2.gif │ │ ├── LineaDiscontinua.gif │ │ ├── MovimientoEncuadre.gif │ │ ├── MovimientoEncuadreCopia.gif │ │ ├── MovimientoEncuadreCopia2.gif │ │ ├── MovimientoLlaves.gif │ │ └── MovimientoLlavesCopia.gif │ └── herramientas_visuales.py ├── 5_introducción_gráficas │ ├── ESCENAS.md │ ├── Introduccion_graficas.py │ └── gifs │ │ ├── Grafica1.gif │ │ ├── Grafica1v2.gif │ │ ├── Grafica2.gif │ │ ├── Grafica3.gif │ │ ├── Grafica4.gif │ │ ├── Grafica5.gif │ │ ├── Grafica6.gif │ │ ├── Grafica7.gif │ │ ├── GraficaSenoCoseno1.gif │ │ └── GraficaSenoCoseno2.gif ├── 6_formulas_3D │ ├── 6b_Introduccion_graficas_3D.py │ ├── ESCENAS.md │ └── gifs │ │ ├── Texto2Dv1.gif │ │ └── Texto2Dv2.gif ├── 7_agregar_audio │ ├── 7_agregar_audio.py │ ├── ESCENAS.md │ └── gifs │ │ ├── Texto2Dv1.gif │ │ └── Texto2Dv2.gif ├── 8_imagenes_svg │ ├── 8_imagenes_svg.py │ ├── ESCENAS.md │ └── gifs │ │ ├── Texto2Dv1.gif │ │ └── Texto2Dv2.gif ├── 9_proyecto │ ├── 9_proyecto.py │ ├── ESCENAS.md │ └── gifs │ │ ├── Texto2Dv1.gif │ │ └── Texto2Dv2.gif ├── extras │ ├── aprender_manim_cuenta_propia_v1 │ │ ├── PASOS.md │ │ ├── aprender_manim_cuenta_propia_v1.py │ │ ├── archivos │ │ │ ├── generic.png │ │ │ └── generic.svg │ │ └── capturas │ │ │ ├── capt2.png │ │ │ ├── capt3.png │ │ │ ├── capt4.png │ │ │ ├── capt5.png │ │ │ ├── capt6.png │ │ │ ├── capt7.png │ │ │ ├── coord_syst.png │ │ │ └── sound.png │ ├── formulas_tex │ │ ├── ESCENA.md │ │ └── gifs │ │ │ ├── ContadorFormulas.gif │ │ │ ├── Paso0.png │ │ │ ├── Paso1.png │ │ │ ├── Paso2.png │ │ │ ├── Paso_error.png │ │ │ └── frames.png │ └── programar_barras_progreso_por_defecto │ │ ├── PASOS.md │ │ └── capturas │ │ ├── capt1.png │ │ ├── capt2.png │ │ ├── capt3.png │ │ ├── capt4.png │ │ └── capt5.png └── teoria_python │ └── compartir_variables.py ├── HelloWorld.gif ├── README.md ├── TeX.png └── titulo.gif /Español/0_instalacion/gnuLinux/INSTRUCCIONES.md: -------------------------------------------------------------------------------- 1 | # Instación en GNU/Linux 2 | 3 | Ver video tutorial en [YouTube](https://www.youtube.com/watch?v=dwiBKFTJWY8). 4 | 5 | ## Pasos previos a la instalación 6 | 7 | ### 1. Descargar de Manim 8 | 9 | * Ir al [repositorio oficial](https://github.com/3b1b/manim), click en el recuadro verde "Clone or download" y luego click en "Download ZIP". 10 | 11 |

12 | 13 | * Descomprimir carpeta manim-master preferentemente en el directorio principal. 14 | 15 | 16 | ## Instalación usando la terminal: 17 | Abrir terminal y copiar los siguientes comandos. 18 | 19 | ### Instalación de LaTeX: 20 | Debian: 21 | ```sh 22 | $ sudo apt-get install texlive-full 23 | ``` 24 | Arch: 25 | ```sh 26 | $ sudo pacman -S texlive-most 27 | ``` 28 | Fedora: 29 | ```sh 30 | # yum -y install texlive-collection-latexextra 31 | ``` 32 | ### Instalación de Python3.7 33 | Debian: 34 | ```sh 35 | $ sudo apt-get install python3.7-minimal 36 | ``` 37 | 38 | Arch: Siempre está al día. 39 | 40 | Fedora: 41 | ```sh 42 | # yum install gcc openssl-devel bzip2-devel libffi-devel 43 | # cd /usr/src 44 | # wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz 45 | # tar xzf Python-3.7.3.tgz 46 | # cd Python-3.7.3 47 | # ./configure --enable-optimizations 48 | # make altinstall 49 | # rm /usr/src/Python-3.7.3.tgz 50 | ``` 51 | 52 | ### Instalación de pip: 53 | Todas las distros: 54 | ```sh 55 | $ mkdir pip 56 | $ cd pip 57 | $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 58 | $ python3 get-pip.py 59 | ``` 60 | 61 | ### Instalación de ffmpeg: 62 | Debian 63 | ```sh 64 | $ sudo apt-get install ffmpeg 65 | ``` 66 | Arch-Linux: 67 | ```sh 68 | $ sudo pacman -S ffmpeg 69 | ``` 70 | Fedora: 71 | ```sh 72 | $ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm 73 | $ sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm 74 | $ sudo dnf install ffmpeg ffmpeg-devel 75 | ``` 76 | 77 | ### Instalación de sox: 78 | Debian 79 | ```sh 80 | $ sudo apt-get install sox 81 | ``` 82 | Arch-Linux (with AUR): 83 | ```sh 84 | $ aurman -S sox 85 | ``` 86 | Fedora: 87 | Descárgalo de: https://pkgs.org/download/sox 88 | 89 | ### Instalación de paqueterías previas para instalar pycairo: 90 | Para todas las distros: 91 | ```sh 92 | $ python3.7 -m pip install pyreadline 93 | $ python3.7 -m pip install pydub 94 | ``` 95 | Además, para las basadas en Debian: 96 | ```sh 97 | $ sudo apt-get install libcairo2-dev libjpeg-dev libgif-dev python3-dev libffi-dev 98 | ``` 99 | 100 | ## Instalación de requerimientos: 101 | Moverse a la carpeta de manim: 102 | 103 | ```sh 104 | ~/manim-master$ 105 | ``` 106 | 107 | Luego escribir: 108 | 109 | ```sh 110 | $ python3.7 -m pip install -r requirements.txt 111 | ``` 112 | 113 | # Ejecución de Manim 114 | 115 | Para ejecutar Manim por primera vez hay que ir a la carpeta de manim y escribir: 116 | 117 | ```sh 118 | $ python3.7 -m manim example_scenes.py SquareToCircle -pl 119 | ``` 120 | 121 | Ese código debería generar algo como esto: 122 | 123 |

124 | 125 | -------------------------------------------------------------------------------- /Español/0_instalacion/gnuLinux/gifs/carp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/gnuLinux/gifs/carp.png -------------------------------------------------------------------------------- /Español/0_instalacion/gnuLinux/gifs/compilacion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/gnuLinux/gifs/compilacion.gif -------------------------------------------------------------------------------- /Español/0_instalacion/gnuLinux/gifs/manimDescarga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/gnuLinux/gifs/manimDescarga.png -------------------------------------------------------------------------------- /Español/0_instalacion/gnuLinux/gifs/nom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/gnuLinux/gifs/nom.png -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/INSTRUCCIONES.md: -------------------------------------------------------------------------------- 1 | # Instación en MacOS 2 | 3 | Ver video tutorial en YouTube. 4 | 5 | ## Instalación de Manim 6 | 7 | ### Abrir la terminal 8 | Se puede usar el buscador Spotlight escribiendo "terminal" 9 | 10 |

11 | 12 | ### Instalar Homebrew 13 | Copiar el código de la página oficial de [Homebrew](https://brew.sh/index_es) y pegarlo en la terminal (y dar enter). 14 | 15 |

16 | 17 | ### Instalar LaTeX (versión completa) 18 | Ir a la página oficial de [MacTeX](http://www.tug.org/mactex/), descargar el .pkg e instalar la versión completa ([video ayuda](https://www.youtube.com/watch?v=5CNmIaRxS20)). 19 | 20 |

21 | 22 | ### Instalar Python 3 23 | Ir a la página oficial de [Python](https://www.python.org/), a la zona de descargas y descargar la versión estable más reciente dependiendo de la versión que uses de Mac ([video ayuda](https://www.youtube.com/watch?v=0hGzGdRQeak)). 24 | 25 |

26 | 27 | ### Instalar PIP 28 | Ejecutar en la termimal los siguientes comandos: 29 | 30 | ```sh 31 | brew install curl 32 | mkdir ManimInstall 33 | cd ManimInstall 34 | curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 35 | python3 get-pip.py 36 | ``` 37 | 38 | ### Instalar paqueterías usando Homebrew 39 | Copiar y pegar cada uno de los siguientes comandos a la terminal: 40 | 41 | #### FFmpeg 42 | ```sh 43 | brew install ffmpeg 44 | ``` 45 | #### Sox 46 | ```sh 47 | brew install sox 48 | ``` 49 | #### Paqueterías extra 50 | ```sh 51 | brew install cairo --use-clang 52 | ``` 53 | 54 | ```sh 55 | brew install py2cairo 56 | ``` 57 | 58 | ```sh 59 | brew install pkg-config 60 | ``` 61 | 62 |

63 | 64 | ### Descargar Manim del [repositorio oficial actual](https://github.com/3b1b/manim), o de [repositorio del 3/Febrero/2019](https://github.com/3b1b/manim/tree/3b088b12843b7a4459fe71eba96b70edafb7aa78). 65 | Click en "Clone or download" y luego click en "Download ZIP". 66 | 67 |

68 | 69 | ### Descomprimir el archivo (de preferencia en "Documents" o "Downloads"). 70 | Aunque puede ser en cualquier lugar que desees, siempre y cuando el nombre de la carpeta no use espacios. Se usará "Documents" para este ejemplo. 71 | 72 |

73 | 74 | ### Instalar lista requirements.txt 75 | Nos movemos a la carpeta de manim con la terminal y luego copiamos y pegamos los siguientes comandos: 76 | 77 | ```sh 78 | python3 -m pip install -r requirements.txt 79 | python3 -m pip install pyreadline 80 | ``` 81 | Y continuar con la instalación 82 | 83 |

84 | 85 | # Ejecución de Manim 86 | 87 | Con la terminal posicionada en la carpeta manim-master copiar y pegar el siguiente código: 88 | 89 | ```sh 90 | python3 -m manim example_scenes.py WriteStuff -pl 91 | ``` 92 | 93 | Esto se deberá ver como: 94 | 95 |

96 | 97 | # Almacenamiento 98 | Al ejecutar manim por primera vez se crearà una carpeta llamada "media" y un archvio de texto "media_dir.txt". En la carpeta "media" se almacenaràn los videos por defecto, si deseas modificar la carpeta donde se exporten los videos tienes que escribir el directorio completo en el archivo "media_dir.txt". 99 | 100 | # Recomendación final: Instalar algún editor de texto plano 101 | Recomiendo SublimteText, ver [video de instalación](https://www.youtube.com/watch?v=qqlLQ-5jH0c). 102 | 103 |

104 | -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/DescargarManim.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/DescargarManim.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/DescargarSublimeText.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/DescargarSublimeText.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP1.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP2.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP3.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP4.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP5.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP6.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP7.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/MacP8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/MacP8.gif -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/almacenamiento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/almacenamiento.png -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/pd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/pd.png -------------------------------------------------------------------------------- /Español/0_instalacion/macOS/gifs/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/macOS/gifs/terminal.png -------------------------------------------------------------------------------- /Español/0_instalacion/windows/INSTRUCCIONES.md: -------------------------------------------------------------------------------- 1 | # Instalación en Windows 2 | 3 | La instalación en Windows es particularmente elaborada, por lo que recomiendo ver el [video tutorial](https://www.youtube.com/watch?v=rifiBLkVkos) de instalación en YouTube, pero aquí se esbozarán los pasos para la gente que tenga más conocimientos en computación. 4 | 5 | En caso de haber concluido todos los pasos y no lograr compilar los archivos es recomendable instalar una versión ligera de GNU/Linux (como [Lubuntu](https://lubuntu.net/downloads/)) en una máquina viritual y realizar el proceso de instalación de [GNU/Linux](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/0_instalacion/gnuLinux/INSTRUCCIONES.md). La única desventaja será que este proceso necesitará unos 10 GB de espacio en tu disco duro. 6 | 7 | [Video](https://www.youtube.com/watch?v=44fthwtnrF0) de como instalar Lubuntu en una máquina virtual usando VirtualBox. 8 | 9 | ## Instalar editor de texto plano. 10 | Yo recomiendo [Sublime Text](https://www.sublimetext.com/). 11 | 12 | ## Descargar Manim del [repositorio oficial](https://github.com/3b1b/manim). 13 | Descomprimir el archivo donde el usuario desee (en este ejemplo lo descomprimiré en Documentos). 14 | 15 | ## Modificar el archivo constants.py 16 | Cambiar el código al archivo constants.py, en la linea que dice: 17 | "Dropbox (3Blue1Brown)/3Blue1Brown Team Folder" 18 | por la dirección de una carpeta dedicada los videos de manim, yo recomiendo la carpeta de videos "Videos" en el directorio principal. 19 | 20 | ## Instalación de LaTeX 21 | Instalar la versión completa de [MikTeX](https://miktex.org/download). 22 | 1. Vas a "Downloads", luego a "All donwloads". 23 | 2. Seleccionar "Net Installar" de 32 bits o 64 bits dependiendo de tu PC. 24 | 3. Descargar e instalar, es un proceso que puede durar varias horas ([ver video ayuda](https://www.youtube.com/watch?v=yPnfHRE_W_g) del minuto 0:00 hasta el 6:19, lo demás no se necesita). 25 | 26 | ## Instalar Python 3. 27 | Ir a la página oficial de [Python](https://www.python.org/), luego a Donwloads y descargar alguna versión de Python superior a la 3.6 (recomiendo la versión más reciente), el instalador debe decir "Windows x86-64 executable installer" e instalar. 28 | 29 | ## Modificar la variable PATH 30 | Añadir a la variable PATH la carpeta donde se instalo Python 3 (ve a Inicio, busca Python 3, dale click derecho a algún archivo y luego click en "Abrir la ubicación del archivo"), además de la subcarpeta "Scripts". 31 | 32 | La ubicación por defecto de la instalación suele ser: 33 | ``` 34 | C:\Users\Pc\AppData\Local\Programs\Python\Python37 35 | ``` 36 | Y la subcarpeta "Scripts": 37 | ``` 38 | C:\Users\Pc\AppData\Local\Programs\Python\Python37\Scripts 39 | ``` 40 | 41 | ## Instalar [ffmpeg](https://ffmpeg.zeranoe.com/builds/) 42 | Descargar e instalar de manera normal ([video ayuda](https://www.youtube.com/watch?v=X7wLMejOjjM)) y añade la carpeta de instalación a la variable PATH. 43 | 44 | ## Instalar [sox](https://sourceforge.net/projects/sox/) 45 | Descarga e instala de manera normal y añade la carpeta de instalación a la variable PATH. 46 | 47 | ## Instalar Pycairo 48 | 1. Ir a esta [página](https://www.lfd.uci.edu/~gohlke/pythonlibs/) 49 | 2. Buscar pycairo (pulsa F3 y escirbe pycairo para encontrarlo más rápido). 50 | 3. Descarga todas las versiones para Python 3 (dependiendo si tu PC es de 64 o 32 bits). 51 | 4. Ir a la ubicación de la carpeta de Python 3 y copia la versión más reciente del archivo .whl a la carpeta. 52 | 5. Abre la terminal y muevete a la dirección de la carpeta de Python 3. 53 | 54 | Ejemplo: 55 | ``` 56 | cd C:\Users\Pc\AppData\Local\Programs\Python\Python37 57 | ``` 58 | 6. Ingresa el siguiente comando: 59 | ``` 60 | python -3 -m pip install 61 | ``` 62 | Seguido del paquete, por ejemplo: 63 | ``` 64 | python -3 -m pip install pycairo-pycairo‑1.17.1‑cp37‑cp37m‑win_amd64.whl 65 | ``` 66 | Si sale el error: 67 | ``` 68 | Unknown option: -3 69 | usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... 70 | Try `python -h' for more information. 71 | ``` 72 | Elimina el "-3" y escribe solo: 73 | ``` 74 | python -m pip install pycairo-pycairo‑1.17.1‑cp37‑cp37m‑win_amd64.whl 75 | ``` 76 | 77 | En caso de que emita un error elimina el archivo de la carpeta de Python 3 y copia una versión anterior a la carpeta y vuelve a intentar compilar el comando anterior (modificando el nombre del paquete). 78 | 79 | Realiza esto hasta que alguna de las versiones sea instalada correctamente. 80 | 81 | ## Instala los requerimientos 82 | Muevete a la carpeta de manim-master que descargaste usando la terminal y ejecuta el comando: 83 | ``` 84 | python -m pip install -r requirements.txt 85 | ``` 86 | 87 | # Ejecución 88 | En la misma carpeta de manim-master compila por primiera vez un archivo de Manim usando: 89 | ``` 90 | python extract_scene.py example_scenes.py WriteStuff -l 91 | ``` 92 | # Almacenamiento 93 | El video se pudo haber guardado ya sea en una subcarpeta de "manim-master" llamada igual al archivo .py que compilaste, es decir 94 | 95 | ``` 96 | manim-master/example_scenes/WriteStuff/420p15 97 | ``` 98 | 99 | O bien en la carpeta que definiste en constants.py en una subcarpeta llamada "animations" 100 | 101 | ``` 102 | Videos/example_scenes/WriteStuff/420p15 103 | ``` 104 | 105 | El 420p15 se refiere a la calidad del video a la que fue exportado. Dependerá de la versión de manim que descargaste el lugar donde se guarde el archivo. 106 | -------------------------------------------------------------------------------- /Español/0_instalacion/windows/gifs/wp1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/windows/gifs/wp1.png -------------------------------------------------------------------------------- /Español/0_instalacion/windows/gifs/wp3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/0_instalacion/windows/gifs/wp3.png -------------------------------------------------------------------------------- /Español/1_formato_textos/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # Formato de textos 2 | Importante: Recuerda que antes de todo se deben importar las paqueterías estandar usando 3 | ```python3 4 | from big_ol_pile_of_manim_imports import * 5 | ``` 6 | como primera linea. 7 | 8 | # Configuración de LaTeX 9 | Para los hispanohablantes la configuración de los símbolos son especiales, ya que usamos la "ñ" y los acentos. Así que hay que cambiar la configuración. 10 | 11 | ## Para los usarios de Windows 12 | Hay que ir a manimlib/tex_template.txt, lo abrimos con un editor de texto y cambiamos la linea 3: 13 | 14 | ```latex 15 | \usepackage[english]{babel} 16 | ``` 17 | 18 | por 19 | 20 | ```latex 21 | \usepackage[latin1]{inputenc} 22 | \usepackage[T1]{fontenc} 23 | ``` 24 | 25 | En caso de que aún así nos genere un error entonces en lugar de ```latin1``` escribimos ```utf8```. 26 | 27 | ## Para los usarios de Mac y Linux 28 | Hay que ir a manimlib/tex_template.txt, lo abrimos con un editor de texto y cambiamos la linea 3: 29 | 30 | ```latex 31 | \usepackage[english]{babel} 32 | ``` 33 | 34 | por 35 | 36 | ```latex 37 | \usepackage[utf8]{inputenc} 38 | \usepackage[T1]{fontenc} 39 | ``` 40 | 41 | En caso de que aún así nos genere un error entonces en lugar de ```utf8``` escribimos ```latin1```. 42 | 43 | 44 | ## Programas 45 | 46 | ### 47 | ```python3 48 | class TextoWrite(Scene): 49 | def construct(self): 50 | texto = TextMobject("Esto es un texto normal") 51 | self.play(Write(texto)) 52 | self.wait(3) 53 | ``` 54 |

55 | 56 | ### 57 | ```python3 58 | class TextoAdd(Scene): 59 | def construct(self): 60 | texto = TextMobject("Esto es un texto normal") 61 | self.add(texto) 62 | self.wait(3) 63 | ``` 64 |

65 | 66 | ### 67 | ```python3 68 | class Formula(Scene): 69 | def construct(self): 70 | formula = TexMobject("Esto es una formula") 71 | self.play(Write(formula)) 72 | self.wait(3) 73 | ``` 74 |

75 | 76 | ### 77 | ```python3 78 | class TextoMixto(Scene): 79 | def construct(self): 80 | textoMixto = TextMobject(""" 81 | Esto es un texto normal, 82 | $esto es una formula$, 83 | $$esto es una formula$$ 84 | """) 85 | self.play(Write(textoMixto)) 86 | self.wait(3) 87 | ``` 88 |

89 | 90 | ### 91 | ```python3 92 | class TextoMixto2(Scene): 93 | def construct(self): 94 | textoMixto = TextMobject(""" 95 | Esto es un texto normal, 96 | $\\frac{x}{y}$, 97 | $$x^2+y^2=a^2$$ 98 | """) 99 | self.play(Write(textoMixto)) 100 | self.wait(3) 101 | ``` 102 |

103 | 104 | ### 105 | ```python3 106 | class TextoMixtoDisplay(Scene): 107 | def construct(self): 108 | textoMixto = TextMobject(""" 109 | Esto es un texto normal, 110 | $\\displaystyle\\frac{x}{y}$, 111 | $$x^2+y^2=a^2$$ 112 | """) 113 | self.play(Write(textoMixto)) 114 | self.wait(3) 115 | ``` 116 |

117 | 118 | ### 119 | ```python3 120 | class PosicionTextoCentro(Scene): 121 | def construct(self): 122 | texto = TextMobject("Texto genérico.") 123 | self.play(Write(texto)) 124 | self.wait(3) 125 | ``` 126 |

127 | 128 | ### 129 | ```python3 130 | class PosicionTextoSuperior(Scene): 131 | def construct(self): 132 | texto = TextMobject("Texto genérico.") 133 | texto.to_edge(UP) 134 | self.play(Write(texto)) 135 | self.wait(3) 136 | ``` 137 |

138 | 139 | ### 140 | ```python3 141 | class PosicionTextoInferior(Scene): 142 | def construct(self): 143 | texto = TextMobject("Texto genérico.") 144 | texto.to_edge(DOWN) 145 | self.play(Write(texto)) 146 | self.wait(3) 147 | ``` 148 |

149 | 150 | ### 151 | ```python3 152 | class PosicionTextoDerecha(Scene): #Probar con "Texto genérico ampliado" 153 | def construct(self): 154 | texto = TextMobject("Texto genérico.") 155 | texto.to_edge(RIGHT) 156 | self.play(Write(texto)) 157 | self.wait(3) 158 | ``` 159 |

160 | 161 | ### 162 | ```python3 163 | class PosicionTextoIzquierda(Scene): 164 | def construct(self): 165 | texto = TextMobject("Texto genérico.") 166 | texto.to_edge(LEFT) 167 | self.play(Write(texto)) 168 | self.wait(3) 169 | ``` 170 |

171 | 172 | ### 173 | ```python3 174 | class PosicionTextoSuperiorDerecha(Scene): 175 | def construct(self): 176 | texto = TextMobject("Texto genérico.") 177 | texto.to_edge(UP+RIGHT) 178 | self.play(Write(texto)) 179 | self.wait(3) 180 | ``` 181 |

182 | 183 | ### 184 | ```python3 185 | class PosicionTextoInferiorIzquierda(Scene): 186 | def construct(self): #Este es un comentario, no es código 187 | texto = TextMobject("Texto genérico.") #Este es un comentario, no es código 188 | texto.to_edge(LEFT+DOWN) 189 | self.play(Write(texto)) 190 | self.wait(3) 191 | ``` 192 |

193 | 194 | ### 195 | ```python3 196 | class PosicionPersonalizado1(Scene): 197 | def construct(self): 198 | textoM = TextMobject("Texto genérico.") 199 | textoC = TextMobject("Texto genérico central.") #Texto de referencia 200 | textoM.move_to(0.25*UP) #Jugar con los valores numéricos 201 | self.play(Write(textoM),Write(textoC)) 202 | self.wait(3) 203 | ``` 204 |

205 | 206 | ### 207 | ```python3 208 | class PosicionPersonalizado2(Scene): #move_to siempre es referente al centro 209 | def construct(self): 210 | textoM = TextMobject("Texto genérico.") 211 | textoC = TextMobject("Texto genérico central.") 212 | textoM.move_to(1*UP+1*RIGHT) 213 | self.play(Write(textoM),Write(textoC)) 214 | self.wait(1) 215 | textoM.move_to(1*UP+1*RIGHT) #El sistema de referencia es el centro 216 | self.play(Write(textoM)) 217 | self.wait(3) 218 | ``` 219 |

220 | 221 | ### 222 | ```python3 223 | class PosicionRelativa1(Scene): 224 | def construct(self): 225 | textoM = TextMobject("Texto relativo.") 226 | textoC = TextMobject("Texto de referencia.") 227 | textoM.next_to(textoC,LEFT,buff=1) #La posición toma como referencia la posición de textoC 228 | self.play(Write(textoM),Write(textoC)) 229 | self.wait(3) 230 | ``` 231 |

232 | 233 | ### 234 | ```python3 235 | class PosicionRelativa2(Scene): 236 | def construct(self): 237 | textoM = TextMobject("Texto relativo.") 238 | textoC = TextMobject("Texto de referencia.") 239 | textoM.shift(UP*0.1) #La referencia es el mismo textoM, texto u objeto 240 | self.play(Write(textoM),Write(textoC)) 241 | self.wait(3) 242 | ``` 243 |

244 | 245 | ### 246 | ```python3 247 | class Rotacion(Scene): 248 | def construct(self): 249 | textoM = TextMobject("Texto relativo.") 250 | textoC = TextMobject("Texto de referencia.") 251 | textoM.shift(UP) 252 | textoM.rotate(PI/4) #El centro es el centro de area del texto, en radianes, texto u objeto 253 | self.play(Write(textoM),Write(textoC)) 254 | self.wait(2) 255 | textoM.rotate(PI/4) 256 | self.wait(2) 257 | textoM.rotate(PI/4) 258 | self.wait(2) 259 | textoM.rotate(PI/4) 260 | self.wait(2) 261 | textoM.rotate(PI) 262 | self.wait(2) 263 | ``` 264 |

265 | 266 | ### 267 | ```python3 268 | class Espejo(Scene): 269 | def construct(self): 270 | textoM = TextMobject("Texto referencia.") 271 | textoM.flip(UP) # Texto y objeto 272 | self.play(Write(textoM)) 273 | self.wait(2) 274 | ``` 275 |

276 | 277 | ### 278 | ```python3 279 | class Tamanhos(Scene): 280 | def construct(self): 281 | textoHuge = TextMobject("{\\Huge Huge Texto 012.\\#!?} Texto normal") 282 | textohuge = TextMobject("{\\huge huge Texto 012.\\#!?} Texto normal") 283 | textoLARGE = TextMobject("{\\LARGE LARGE Texto 012.\\#!?} Texto normal") 284 | textoLarge = TextMobject("{\\Large Large Texto 012.\\#!?} Texto normal") 285 | textolarge = TextMobject("{\\large large Texto 012.\\#!?} Texto normal") 286 | textoNormal = TextMobject("{\\normalsize normal Texto 012.\\#!?} Texto normal") 287 | textosmall = TextMobject("{\\small small Texto 012.\\#!?} Texto normal") 288 | textofootnotesize = TextMobject("{\\footnotesize footnotesize Texto 012.\\#!?} Texto normal") 289 | textoscriptsize = TextMobject("{\\scriptsize scriptsize Texto 012.\\#!?} Texto normal") 290 | textotiny = TextMobject("{\\tiny tiny Texto 012.\\#!?} Texto normal") 291 | textoHuge.to_edge(UP) 292 | textohuge.next_to(textoHuge,DOWN,buff=0.1) 293 | textoLARGE.next_to(textohuge,DOWN,buff=0.1) 294 | textoLarge.next_to(textoLARGE,DOWN,buff=0.1) 295 | textolarge.next_to(textoLarge,DOWN,buff=0.1) 296 | textoNormal.next_to(textolarge,DOWN,buff=0.1) 297 | textosmall.next_to(textoNormal,DOWN,buff=0.1) 298 | textofootnotesize.next_to(textosmall,DOWN,buff=0.1) 299 | textoscriptsize.next_to(textofootnotesize,DOWN,buff=0.1) 300 | textotiny.next_to(textoscriptsize,DOWN,buff=0.1) 301 | self.add(textoHuge,textohuge,textoLARGE,textoLarge,textolarge,textoNormal,textosmall,textofootnotesize,textoscriptsize,textotiny) 302 | self.wait(3) 303 | ``` 304 |

305 | 306 | ### 307 | ```python3 308 | class TamanhosPersonalizados(Scene): 309 | def construct(self): 310 | texto = TextMobject("{\\fontsize{60}{70}\\selectfont Texto.}") 311 | self.play(Write(texto)) 312 | self.wait(3) 313 | ``` 314 |

315 | 316 | ### 317 | ```python3 318 | class Fuentes(Scene): 319 | def construct(self): 320 | textoNormal = TextMobject("{Texto normal 012.\\#!?} Texto normal") 321 | textoItalica = TextMobject("\\textit{Texto en itálicas 012.\\#!?} Texto normal") 322 | textoMaquina = TextMobject("\\texttt{Texto en máquina 012.\\#!?} Texto normal") 323 | textoNegritas = TextMobject("\\textbf{Texto en negritas 012.\\#!?} Texto normal") 324 | textoSL = TextMobject("\\textsl{Texto en sl 012.\\#!?} Texto normal") 325 | textoSC = TextMobject("\\textsc{Texto en sc 012.\\#!?} Texto normal") 326 | textoNormal.to_edge(UP) 327 | textoItalica.next_to(textoNormal,DOWN,buff=.5) 328 | textoMaquina.next_to(textoItalica,DOWN,buff=.5) 329 | textoNegritas.next_to(textoMaquina,DOWN,buff=.5) 330 | textoSL.next_to(textoNegritas,DOWN,buff=.5) 331 | textoSC.next_to(textoSL,DOWN,buff=.5) 332 | self.add(textoNormal,textoItalica,textoMaquina,textoNegritas,textoSL,textoSC) 333 | self.wait(3) 334 | ``` 335 |

336 | -------------------------------------------------------------------------------- /Español/1_formato_textos/formato_textos.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class TextoWrite(Scene): 4 | def construct(self): 5 | texto = TextMobject("Esto es un texto normal") 6 | self.play(Write(texto)) 7 | self.wait(3) 8 | 9 | class TextoAdd(Scene): 10 | def construct(self): 11 | texto = TextMobject("Esto es un texto normal") 12 | self.add(texto) 13 | self.wait(3) 14 | 15 | class Formula(Scene): 16 | def construct(self): 17 | formula = TexMobject("Esto es una formula") 18 | self.play(Write(formula)) 19 | self.wait(3) 20 | 21 | class TextoMixto(Scene): 22 | def construct(self): 23 | textoMixto = TextMobject(""" 24 | Esto es un texto normal, 25 | $esto es una formula$, 26 | $$esto es una formula$$ 27 | """) 28 | self.play(Write(textoMixto)) 29 | self.wait(3) 30 | 31 | class TextoMixto2(Scene): 32 | def construct(self): 33 | textoMixto = TextMobject(""" 34 | Esto es un texto normal, 35 | $\\frac{x}{y}$, 36 | $$x^2+y^2=a^2$$ 37 | """) 38 | self.play(Write(textoMixto)) 39 | self.wait(3) 40 | 41 | class TextoMixtoDisplay(Scene): 42 | def construct(self): 43 | textoMixto = TextMobject(""" 44 | Esto es un texto normal, 45 | $\\displaystyle\\frac{x}{y}$, 46 | $$x^2+y^2=a^2$$ 47 | """) 48 | self.play(Write(textoMixto)) 49 | self.wait(3) 50 | 51 | class PosicionTextoCentro(Scene): 52 | def construct(self): 53 | texto = TextMobject("Texto genérico.") 54 | self.play(Write(texto)) 55 | self.wait(3) 56 | 57 | class PosicionTextoSuperior(Scene): 58 | def construct(self): 59 | texto = TextMobject("Texto genérico.") 60 | texto.to_edge(UP) 61 | self.play(Write(texto)) 62 | self.wait(3) 63 | 64 | class PosicionTextoInferior(Scene): 65 | def construct(self): 66 | texto = TextMobject("Texto genérico.") 67 | texto.to_edge(DOWN) 68 | self.play(Write(texto)) 69 | self.wait(3) 70 | 71 | class PosicionTextoDerecha(Scene): #Probar con "Texto genérico ampliado" 72 | def construct(self): 73 | texto = TextMobject("Texto genérico.") 74 | texto.to_edge(RIGHT) 75 | self.play(Write(texto)) 76 | self.wait(3) 77 | 78 | class PosicionTextoIzquierda(Scene): 79 | def construct(self): 80 | texto = TextMobject("Texto genérico.") 81 | texto.to_edge(LEFT) 82 | self.play(Write(texto)) 83 | self.wait(3) 84 | 85 | class PosicionTextoSuperiorDerecha(Scene): 86 | def construct(self): 87 | texto = TextMobject("Texto genérico.") 88 | texto.to_edge(UP+RIGHT) 89 | self.play(Write(texto)) 90 | self.wait(3) 91 | 92 | class PosicionTextoInferiorIzquierda(Scene): 93 | def construct(self): #Este es un comentario, no es código 94 | texto = TextMobject("Texto genérico.") #Este es un comentario, no es código 95 | texto.to_edge(LEFT+DOWN) 96 | self.play(Write(texto)) 97 | self.wait(3) 98 | 99 | class PosicionPersonalizado1(Scene): 100 | def construct(self): 101 | textoM = TextMobject("Texto genérico.") 102 | textoC = TextMobject("Texto genérico central.") #Texto de referencia 103 | textoM.move_to(0.25*UP) #Jugar con los valores numéricos 104 | self.play(Write(textoM),Write(textoC)) 105 | self.wait(3) 106 | 107 | class PosicionPersonalizado2(Scene): #move_to siempre es referente al centro 108 | def construct(self): 109 | textoM = TextMobject("Texto genérico.") 110 | textoC = TextMobject("Texto genérico central.") 111 | textoM.move_to(1*UP+1*RIGHT) 112 | self.play(Write(textoM),Write(textoC)) 113 | self.wait(1) 114 | textoM.move_to(1*UP+1*RIGHT) #El sistema de referencia es el centro 115 | self.play(Write(textoM)) 116 | self.wait(3) 117 | 118 | class PosicionRelativa1(Scene): 119 | def construct(self): 120 | textoM = TextMobject("Texto relativo.") 121 | textoC = TextMobject("Texto de referencia.") 122 | textoM.next_to(textoC,LEFT,buff=1) #La posición toma como referencia la posición de textoC 123 | self.play(Write(textoM),Write(textoC)) 124 | self.wait(3) 125 | 126 | class PosicionRelativa2(Scene): 127 | def construct(self): 128 | textoM = TextMobject("Texto relativo.") 129 | textoC = TextMobject("Texto de referencia.") 130 | textoM.shift(UP*0.1) #La referencia es el mismo textoM, texto u objeto 131 | self.play(Write(textoM),Write(textoC)) 132 | self.wait(3) 133 | 134 | class Rotacion(Scene): 135 | def construct(self): 136 | textoM = TextMobject("Texto relativo.") 137 | textoC = TextMobject("Texto de referencia.") 138 | textoM.shift(UP) 139 | textoM.rotate(PI/4) #El centro es el centro de area del texto, en radianes, texto u objeto 140 | self.play(Write(textoM),Write(textoC)) 141 | self.wait(2) 142 | textoM.rotate(PI/4) 143 | self.wait(2) 144 | textoM.rotate(PI/4) 145 | self.wait(2) 146 | textoM.rotate(PI/4) 147 | self.wait(2) 148 | textoM.rotate(PI) 149 | self.wait(2) 150 | 151 | class Espejo(Scene): 152 | def construct(self): 153 | textoM = TextMobject("Texto referencia.") 154 | textoM.flip(UP) # Texto y objeto 155 | self.play(Write(textoM)) 156 | self.wait(2) 157 | 158 | class Tamanhos(Scene): 159 | def construct(self): 160 | textoHuge = TextMobject("{\\Huge Huge Texto 012.\\#!?} Texto normal") 161 | textohuge = TextMobject("{\\huge huge Texto 012.\\#!?} Texto normal") 162 | textoLARGE = TextMobject("{\\LARGE LARGE Texto 012.\\#!?} Texto normal") 163 | textoLarge = TextMobject("{\\Large Large Texto 012.\\#!?} Texto normal") 164 | textolarge = TextMobject("{\\large large Texto 012.\\#!?} Texto normal") 165 | textoNormal = TextMobject("{\\normalsize normal Texto 012.\\#!?} Texto normal") 166 | textosmall = TextMobject("{\\small small Texto 012.\\#!?} Texto normal") 167 | textofootnotesize = TextMobject("{\\footnotesize footnotesize Texto 012.\\#!?} Texto normal") 168 | textoscriptsize = TextMobject("{\\scriptsize scriptsize Texto 012.\\#!?} Texto normal") 169 | textotiny = TextMobject("{\\tiny tiny Texto 012.\\#!?} Texto normal") 170 | textoHuge.to_edge(UP) 171 | textohuge.next_to(textoHuge,DOWN,buff=0.1) 172 | textoLARGE.next_to(textohuge,DOWN,buff=0.1) 173 | textoLarge.next_to(textoLARGE,DOWN,buff=0.1) 174 | textolarge.next_to(textoLarge,DOWN,buff=0.1) 175 | textoNormal.next_to(textolarge,DOWN,buff=0.1) 176 | textosmall.next_to(textoNormal,DOWN,buff=0.1) 177 | textofootnotesize.next_to(textosmall,DOWN,buff=0.1) 178 | textoscriptsize.next_to(textofootnotesize,DOWN,buff=0.1) 179 | textotiny.next_to(textoscriptsize,DOWN,buff=0.1) 180 | self.add(textoHuge,textohuge,textoLARGE,textoLarge,textolarge,textoNormal,textosmall,textofootnotesize,textoscriptsize,textotiny) 181 | self.wait(3) 182 | 183 | class TamanhosPersonalizados(Scene): 184 | def construct(self): 185 | texto = TextMobject("{\\fontsize{60}{70}\\selectfont Texto.}") 186 | self.play(Write(texto)) 187 | self.wait(3) 188 | 189 | class Fuentes(Scene): 190 | def construct(self): 191 | textoNormal = TextMobject("{Texto normal 012.\\#!?} Texto normal") 192 | textoItalica = TextMobject("\\textit{Texto en itálicas 012.\\#!?} Texto normal") 193 | textoMaquina = TextMobject("\\texttt{Texto en máquina 012.\\#!?} Texto normal") 194 | textoNegritas = TextMobject("\\textbf{Texto en negritas 012.\\#!?} Texto normal") 195 | textoSL = TextMobject("\\textsl{Texto en sl 012.\\#!?} Texto normal") 196 | textoSC = TextMobject("\\textsc{Texto en sc 012.\\#!?} Texto normal") 197 | textoNormal.to_edge(UP) 198 | textoItalica.next_to(textoNormal,DOWN,buff=.5) 199 | textoMaquina.next_to(textoItalica,DOWN,buff=.5) 200 | textoNegritas.next_to(textoMaquina,DOWN,buff=.5) 201 | textoSL.next_to(textoNegritas,DOWN,buff=.5) 202 | textoSC.next_to(textoSL,DOWN,buff=.5) 203 | self.add(textoNormal,textoItalica,textoMaquina,textoNegritas,textoSL,textoSC) 204 | self.wait(3) 205 | -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/Espejo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/Espejo.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/Formula.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/Formula.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/Fuentes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/Fuentes.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionPersonalizado1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionPersonalizado1.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionPersonalizado2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionPersonalizado2.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionRelativa1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionRelativa1.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionRelativa2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionRelativa2.png -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoCentro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoCentro.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoDerecha.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoDerecha.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoInferior.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoInferior.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoInferiorIzquierda.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoInferiorIzquierda.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoIzquierda.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoIzquierda.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoSuperior.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoSuperior.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/PosicionTextoSuperiorDerecha.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/PosicionTextoSuperiorDerecha.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/Rotacion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/Rotacion.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/Tamanhos.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/Tamanhos.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TamanhosPersonalizados.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TamanhosPersonalizados.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TextoAdd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TextoAdd.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TextoMixto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TextoMixto.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TextoMixto2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TextoMixto2.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TextoMixtoDisplay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TextoMixtoDisplay.gif -------------------------------------------------------------------------------- /Español/1_formato_textos/gifs/TextoWrite.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/1_formato_textos/gifs/TextoWrite.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # Efectos de texto usando arreglos 2 | ## Programas 3 | ### Añadir color a cada elemento del arreglo 4 | ```python3 5 | COLOR_P="#3EFC24" 6 | 7 | class ColorTexto(Scene): 8 | def construct(self): 9 | texto = TextMobject("A","B","C","D","E","F") 10 | texto[0].set_color(RED) 11 | texto[1].set_color(BLUE) 12 | texto[2].set_color(GREEN) 13 | texto[3].set_color(ORANGE) 14 | texto[4].set_color("#DC28E2") #Los colores son hexadecimales 15 | texto[5].set_color(COLOR_P) 16 | self.play(Write(texto)) 17 | self.wait(2) 18 | ``` 19 |

20 | 21 | ### 22 | ```python3 23 | class FormulaColor1(Scene): 24 | def construct(self): 25 | texto = TexMobject("x","=","{a","\\over","b}") 26 | texto[0].set_color(RED) 27 | texto[1].set_color(BLUE) 28 | texto[2].set_color(GREEN) 29 | texto[3].set_color(ORANGE) 30 | texto[4].set_color("#DC28E2") 31 | self.play(Write(texto)) 32 | self.wait(2) 33 | ``` 34 |

35 | 36 | ### 37 | ```python3 38 | class FormulaColor2(Scene): 39 | def construct(self): 40 | texto = TexMobject("x","=","\\frac{a}{b}") 41 | texto[0].set_color(RED) 42 | texto[1].set_color(BLUE) 43 | texto[2].set_color(GREEN) 44 | self.play(Write(texto)) 45 | self.wait(2) 46 | ``` 47 |

48 | 49 | ### 50 | ```python3 51 | class FormulaColor3(Scene): 52 | def construct(self): 53 | texto = TexMobject("\\sqrt{","\\int_{","a}^","{b}","\\left(","\\frac{x}{y}","\\right)","dx}") 54 | texto[0].set_color(RED) 55 | texto[1].set_color(BLUE) 56 | texto[2].set_color(GREEN) 57 | texto[3].set_color(YELLOW) 58 | texto[4].set_color(PINK) 59 | texto[5].set_color(ORANGE) 60 | texto[6].set_color(PURPLE) 61 | texto[7].set_color(MAROON) 62 | self.play(Write(texto)) 63 | self.wait(2) 64 | ``` 65 |

66 | 67 | ### 68 | ```python3 69 | class FormulaColor3Mejorada(Scene): 70 | def construct(self): 71 | texto = TexMobject("\\sqrt{","\\int_{","a}^","{b}","\\left(","\\frac{x}{y}","\\right)","dx.}") 72 | texto[0].set_color(RED) 73 | texto[1].set_color(BLUE) 74 | texto[2].set_color(GREEN) 75 | texto[3].set_color(YELLOW) 76 | texto[4].set_color(PINK) 77 | texto[5].set_color(ORANGE) 78 | texto[6].set_color(PURPLE) 79 | texto[7].set_color(MAROON) 80 | self.play(Write(texto)) 81 | self.wait(3) 82 | ``` 83 |

84 | 85 | ### 86 | ```python3 87 | class FormulaColor3Mejorada2(Scene): 88 | def construct(self): 89 | texto = TexMobject("\\sqrt{","\\int_","{a}^","{b}","{\\left(","{x","\\over","y}","\\right)}","d","x",".}") 90 | texto[0].set_color(RED) 91 | texto[1].set_color(BLUE) 92 | texto[2].set_color(GREEN) 93 | texto[3].set_color(YELLOW) 94 | texto[4].set_color(PINK) 95 | texto[5].set_color(ORANGE) 96 | texto[6].set_color(PURPLE) 97 | texto[7].set_color(MAROON) 98 | texto[8].set_color(TEAL) 99 | texto[9].set_color(GOLD) 100 | self.play(Write(texto)) 101 | self.wait(3) 102 | ``` 103 |

104 | 105 | ### 106 | ```python3 107 | class FormulaColor4(Scene): 108 | def construct(self): 109 | texto = TexMobject("\\sqrt{","\\int_","{a","+","c}^","{b}","{\\left(","{x","\\over","y}","\\right)}","d","x",".}") 110 | texto[0].set_color(RED) 111 | texto[1].set_color(BLUE) 112 | texto[2].set_color(GREEN) 113 | texto[3].set_color(YELLOW) 114 | texto[4].set_color(PINK) 115 | texto[5].set_color(ORANGE) 116 | texto[6].set_color(PURPLE) 117 | texto[7].set_color(MAROON) 118 | texto[8].set_color(TEAL) 119 | texto[9].set_color(GOLD) 120 | texto[10].set_color(GRAY) 121 | texto[11].set_color(RED) 122 | self.play(Write(texto)) 123 | self.wait(3) 124 | ``` 125 |

126 | 127 | ### 128 | ```python3 129 | class ColorPorCaracter(Scene): 130 | def construct(self): 131 | texto = TexMobject("{d","\\over","d","x","}","\\int_","{a}^","{","x","}","f(","t",")d","t","=","f(","x",")") 132 | texto.set_color_by_tex("x",RED) 133 | self.play(Write(texto)) 134 | self.wait(2) 135 | ``` 136 |

137 | 138 | ### 139 | ```python3 140 | class ColorPorCaracterCorregida(Scene): 141 | def construct(self): 142 | texto = TexMobject("{d","\\over","d","x","}","\\int_","{a}^","{","x","}","f(","t",")d","t","=","f(","x",")") 143 | texto.set_color_by_tex("x",RED) 144 | texto[6].set_color(RED) 145 | texto[8].set_color(WHITE) 146 | self.play(Write(texto)) 147 | self.wait(2) 148 | ``` 149 |

150 | 151 | ### 152 | ```python3 153 | class ForLista(Scene): 154 | def construct(self): 155 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 156 | for i in [0,1,3,4]: 157 | texto[i].set_color(RED) 158 | self.play(Write(texto)) 159 | self.wait(3) 160 | ``` 161 |

162 | 163 | ### 164 | ```python3 165 | class ForRango1(Scene): 166 | def construct(self): #no usar siempre frac 167 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 168 | for i in range(3): 169 | texto[i].set_color(RED) 170 | self.play(Write(texto)) 171 | self.wait(3) 172 | ``` 173 |

174 | 175 | ### 176 | ```python3 177 | class ForRango2(Scene): 178 | def construct(self): 179 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 180 | for i in range(2,6): 181 | texto[i].set_color(RED) 182 | self.play(Write(texto)) 183 | self.wait(3) 184 | ``` 185 |

186 | 187 | ### 188 | ```python3 189 | class For2Variables(Scene): 190 | def construct(self): 191 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 192 | for i,color in [(2,RED),(4,PINK)]: 193 | texto[i].set_color(color) 194 | self.play(Write(texto)) 195 | self.wait(3) 196 | ``` 197 |

198 | 199 | ### 200 | ```python3 201 | class CambioTamanho(Scene): 202 | def construct(self): 203 | texto = TexMobject("\\sum_{i=0}^n i=\\frac{n(n+1)}{2}") 204 | self.add(texto) 205 | self.wait() 206 | texto.scale_in_place(2) 207 | self.wait(2) 208 | ``` 209 |

210 | 211 | ### 212 | ```python3 213 | class AparicionDesaparicionTexto1(Scene): 214 | def construct(self): 215 | texto = TextMobject("Texto u objeto") 216 | self.wait() 217 | self.add(texto) 218 | self.wait() 219 | self.remove(texto) 220 | self.wait() 221 | ``` 222 |

223 | 224 | ### 225 | ```python3 226 | class AparicionDesaparicionTexto2(Scene): 227 | def construct(self): 228 | texto = TextMobject("Texto u objeto") 229 | self.play(FadeIn(texto)) 230 | self.wait() 231 | self.play(FadeOut(texto),run_time=1) 232 | self.wait() 233 | ``` 234 |

235 | 236 | ### 237 | ```python3 238 | class EfectoAparicionTexto1(Scene): 239 | def construct(self): 240 | texto = TextMobject("Texto u objeto") 241 | self.play(FadeInFromDown(texto),run_time=1) 242 | self.wait() 243 | ``` 244 |

245 | 246 | ### 247 | ```python3 248 | class EfectoAparicionTexto2(Scene): 249 | def construct(self): 250 | texto = TextMobject("Texto u objeto") 251 | self.play(GrowFromCenter(texto),run_time=1) 252 | self.wait() 253 | ``` 254 |

255 | 256 | ### 257 | ```python3 258 | class EfectoAparicionTexto3(Scene): 259 | def construct(self): 260 | texto = TextMobject("Texto u objeto") 261 | self.play(ShowCreation(texto),run_time=1) 262 | self.wait() 263 | ``` 264 |

265 | 266 | ### 267 | ```python3 268 | class ColoreadoTexto(Scene): 269 | def construct(self): 270 | texto = TextMobject("Texto u objeto") 271 | self.add(texto) 272 | self.wait(0.5) 273 | for letra in texto: 274 | self.play(LaggedStart( 275 | ApplyMethod, letra, 276 | lambda m : (m.set_color, YELLOW), 277 | run_time = 0.12 278 | )) 279 | self.wait(0.5) 280 | ``` 281 |

282 | 283 | ### 284 | ```python3 285 | class Tachado1(Scene): 286 | def construct(self): 287 | texto = TexMobject("\\sum_{i=1}^{\infty}i","=","-\\frac{1}{2}") 288 | tache = Cross(texto[2]) 289 | tache.set_stroke(RED, 6) 290 | self.play(Write(texto)) 291 | self.wait(.5) 292 | self.play(ShowCreation(tache)) 293 | self.wait(2) 294 | ``` 295 |

296 | 297 | ### 298 | ```python3 299 | class Tachado2(Scene): 300 | def construct(self): 301 | texto = TexMobject("\\sum_{i=1}^{\infty}i","=","-\\frac{1}{2}") 302 | eq = VGroup(texto[1],texto[2]) 303 | tache = Cross(eq) 304 | tache.set_stroke(RED, 6) 305 | self.play(Write(texto)) 306 | self.wait(.5) 307 | self.play(ShowCreation(tache)) 308 | self.wait(2) 309 | ``` 310 |

311 | 312 | ### 313 | ```python3 314 | class Encuadre1(Scene): 315 | def construct(self): 316 | texto=TexMobject( 317 | "\\hat g(", "f", ")", "=", "\\int", "_{t_1}", "^{t_{2}}", 318 | "g(", "t", ")", "e", "^{-2\\pi i", "f", "t}", "dt" 319 | ) 320 | marco = SurroundingRectangle(texto[4], buff = 0.5*SMALL_BUFF) 321 | self.play(Write(texto)) 322 | self.wait(.5) 323 | self.play(ShowCreation(marco)) 324 | self.wait(2) 325 | ``` 326 |

327 | 328 | ### 329 | ```python3 330 | class Encuadre2(Scene): 331 | def construct(self): 332 | texto=TexMobject( 333 | "\\hat g(", "f", ")", "=", "\\int", "_{t_1}", "^{t_{2}}", 334 | "g(", "t", ")", "e", "^{-2\\pi i", "f", "t}", "dt" 335 | ) 336 | seleccion=VGroup(texto[4],texto[5],texto[6]) 337 | marco = SurroundingRectangle(seleccion, buff = 0.5*SMALL_BUFF) 338 | marco.set_stroke(GREEN,9) 339 | self.play(Write(texto)) 340 | self.wait(.5) 341 | self.play(ShowCreation(marco)) 342 | self.wait(2) 343 | ``` 344 |

345 | 346 | ### 347 | ```python3 348 | class Llave(Scene): 349 | def construct(self): 350 | texto=TexMobject( 351 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 352 | "g(x)\\frac{d}{dx}f(x)" 353 | ) 354 | self.play(Write(texto)) 355 | llave_s = Brace(texto[1], UP, buff = SMALL_BUFF) 356 | llave_i = Brace(texto[3], DOWN, buff = SMALL_BUFF) 357 | t_s = llave_s.get_text("$g'f$") 358 | t_i = llave_i.get_text("$f'g$") 359 | self.play( 360 | GrowFromCenter(llave_s), 361 | GrowFromCenter(llave_i), 362 | FadeIn(t_s), 363 | FadeIn(t_i) 364 | ) 365 | self.wait() 366 | ``` 367 |

368 | 369 | -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/efectos_arreglos_texto.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | COLOR_P="#3EFC24" 4 | 5 | class ColorTexto(Scene): 6 | def construct(self): 7 | texto = TextMobject("A","B","C","D","E","F") 8 | texto[0].set_color(RED) 9 | texto[1].set_color(BLUE) 10 | texto[2].set_color(GREEN) 11 | texto[3].set_color(ORANGE) 12 | texto[4].set_color("#DC28E2") #Los colores son hexadecimales 13 | texto[5].set_color(COLOR_P) 14 | self.play(Write(texto)) 15 | self.wait(2) 16 | 17 | class FormulaColor1(Scene): 18 | def construct(self): 19 | texto = TexMobject("x","=","{a","\\over","b}") 20 | texto[0].set_color(RED) 21 | texto[1].set_color(BLUE) 22 | texto[2].set_color(GREEN) 23 | texto[3].set_color(ORANGE) 24 | texto[4].set_color("#DC28E2") 25 | self.play(Write(texto)) 26 | self.wait(2) 27 | 28 | class FormulaColor2(Scene): 29 | def construct(self): 30 | texto = TexMobject("x","=","\\frac{a}{b}") 31 | texto[0].set_color(RED) 32 | texto[1].set_color(BLUE) 33 | texto[2].set_color(GREEN) 34 | self.play(Write(texto)) 35 | self.wait(2) 36 | 37 | class FormulaColor3(Scene): 38 | def construct(self): 39 | texto = TexMobject("\\sqrt{","\\int_{","a}^","{b}","\\left(","\\frac{x}{y}","\\right)","dx}") 40 | texto[0].set_color(RED) 41 | texto[1].set_color(BLUE) 42 | texto[2].set_color(GREEN) 43 | texto[3].set_color(YELLOW) 44 | texto[4].set_color(PINK) 45 | texto[5].set_color(ORANGE) 46 | texto[6].set_color(PURPLE) 47 | texto[7].set_color(MAROON) 48 | self.play(Write(texto)) 49 | self.wait(2) 50 | 51 | class FormulaColor3Mejorada(Scene): 52 | def construct(self): 53 | texto = TexMobject("\\sqrt{","\\int_{","a}^","{b}","\\left(","\\frac{x}{y}","\\right)","dx.}") 54 | texto[0].set_color(RED) 55 | texto[1].set_color(BLUE) 56 | texto[2].set_color(GREEN) 57 | texto[3].set_color(YELLOW) 58 | texto[4].set_color(PINK) 59 | texto[5].set_color(ORANGE) 60 | texto[6].set_color(PURPLE) 61 | texto[7].set_color(MAROON) 62 | self.play(Write(texto)) 63 | self.wait(3) 64 | 65 | class FormulaColor3Mejorada2(Scene): 66 | def construct(self): 67 | texto = TexMobject("\\sqrt{","\\int_","{a}^","{b}","{\\left(","{x","\\over","y}","\\right)}","d","x",".}") 68 | texto[0].set_color(RED) 69 | texto[1].set_color(BLUE) 70 | texto[2].set_color(GREEN) 71 | texto[3].set_color(YELLOW) 72 | texto[4].set_color(PINK) 73 | texto[5].set_color(ORANGE) 74 | texto[6].set_color(PURPLE) 75 | texto[7].set_color(MAROON) 76 | texto[8].set_color(TEAL) 77 | texto[9].set_color(GOLD) 78 | self.play(Write(texto)) 79 | self.wait(3) 80 | 81 | class FormulaColor4(Scene): 82 | def construct(self): 83 | texto = TexMobject("\\sqrt{","\\int_","{a","+","c}^","{b}","{\\left(","{x","\\over","y}","\\right)}","d","x",".}") 84 | texto[0].set_color(RED) 85 | texto[1].set_color(BLUE) 86 | texto[2].set_color(GREEN) 87 | texto[3].set_color(YELLOW) 88 | texto[4].set_color(PINK) 89 | texto[5].set_color(ORANGE) 90 | texto[6].set_color(PURPLE) 91 | texto[7].set_color(MAROON) 92 | texto[8].set_color(TEAL) 93 | texto[9].set_color(GOLD) 94 | texto[10].set_color(GRAY) 95 | texto[11].set_color(RED) 96 | self.play(Write(texto)) 97 | self.wait(3) 98 | 99 | class ColorPorCaracter(Scene): 100 | def construct(self): 101 | texto = TexMobject("{d","\\over","d","x","}","\\int_","{a}^","{","x","}","f(","t",")d","t","=","f(","x",")") 102 | texto.set_color_by_tex("x",RED) 103 | self.play(Write(texto)) 104 | self.wait(2) 105 | 106 | class ColorPorCaracterCorregida(Scene): 107 | def construct(self): 108 | texto = TexMobject("{d","\\over","d","x","}","\\int_","{a}^","{","x","}","f(","t",")d","t","=","f(","x",")") 109 | texto.set_color_by_tex("x",RED) 110 | texto[6].set_color(RED) 111 | texto[8].set_color(WHITE) 112 | self.play(Write(texto)) 113 | self.wait(2) 114 | 115 | class ForLista(Scene): 116 | def construct(self): #no usar siempre frac 117 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 118 | for i in [0,1,3,4]: 119 | texto[i].set_color(RED) 120 | self.play(Write(texto)) 121 | self.wait(3) 122 | 123 | class ForRango1(Scene): 124 | def construct(self): #no usar siempre frac 125 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 126 | for i in range(3): 127 | texto[i].set_color(RED) 128 | self.play(Write(texto)) 129 | self.wait(3) 130 | 131 | class ForRango2(Scene): 132 | def construct(self): #no usar siempre frac 133 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 134 | for i in range(2,6): 135 | texto[i].set_color(RED) 136 | self.play(Write(texto)) 137 | self.wait(3) 138 | 139 | class For2Variables(Scene): 140 | def construct(self): #no usar siempre frac 141 | texto = TexMobject("[0]","[1]","[2]","[3]","[4]","[5]","[6]","[7]") 142 | for i,color in [(2,RED),(4,PINK)]: 143 | texto[i].set_color(color) 144 | self.play(Write(texto)) 145 | self.wait(3) 146 | 147 | class CambioTamanho(Scene): 148 | def construct(self): 149 | texto = TexMobject("\\sum_{i=0}^n i=\\frac{n(n+1)}{2}") 150 | self.add(texto) 151 | self.wait() 152 | texto.scale_in_place(2) 153 | self.wait(2) 154 | 155 | class AparicionDesaparicionTexto1(Scene): 156 | def construct(self): 157 | texto = TextMobject("Texto u objeto") 158 | self.wait() 159 | self.add(texto) 160 | self.wait() 161 | self.remove(texto) 162 | self.wait() 163 | 164 | class AparicionDesaparicionTexto2(Scene): 165 | def construct(self): 166 | texto = TextMobject("Texto u objeto") 167 | self.play(FadeIn(texto)) 168 | self.wait() 169 | self.play(FadeOut(texto),run_time=1) 170 | self.wait() 171 | 172 | class EfectoAparicionTexto1(Scene): 173 | def construct(self): 174 | texto = TextMobject("Texto u objeto") 175 | self.play(FadeInFromDown(texto),run_time=1) 176 | self.wait() 177 | 178 | class EfectoAparicionTexto2(Scene): 179 | def construct(self): 180 | texto = TextMobject("Texto u objeto") 181 | self.play(GrowFromCenter(texto),run_time=1) 182 | self.wait() 183 | 184 | class EfectoAparicionTexto3(Scene): 185 | def construct(self): 186 | texto = TextMobject("Texto u objeto") 187 | self.play(ShowCreation(texto),run_time=1) 188 | self.wait() 189 | 190 | class ColoreadoTexto(Scene): 191 | def construct(self): 192 | texto = TextMobject("Texto u objeto") 193 | self.add(texto) 194 | self.wait(0.5) 195 | for letra in texto: 196 | self.play(LaggedStart( 197 | ApplyMethod, letra, 198 | lambda m : (m.set_color, YELLOW), 199 | run_time = 0.12 200 | )) 201 | self.wait(0.5) 202 | 203 | class Tachado1(Scene): 204 | def construct(self): 205 | texto = TexMobject("\\sum_{i=1}^{\infty}i","=","-\\frac{1}{2}") 206 | tache = Cross(texto[2]) 207 | tache.set_stroke(RED, 6) 208 | self.play(Write(texto)) 209 | self.wait(.5) 210 | self.play(ShowCreation(tache)) 211 | self.wait(2) 212 | 213 | class Tachado2(Scene): 214 | def construct(self): 215 | texto = TexMobject("\\sum_{i=1}^{\infty}i","=","-\\frac{1}{2}") 216 | eq = VGroup(texto[1],texto[2]) 217 | tache = Cross(eq) 218 | tache.set_stroke(RED, 6) 219 | self.play(Write(texto)) 220 | self.wait(.5) 221 | self.play(ShowCreation(tache)) 222 | self.wait(2) 223 | 224 | class Encuadre1(Scene): 225 | def construct(self): 226 | texto=TexMobject( 227 | "\\hat g(", "f", ")", "=", "\\int", "_{t_1}", "^{t_{2}}", 228 | "g(", "t", ")", "e", "^{-2\\pi i", "f", "t}", "dt" 229 | ) 230 | marco = SurroundingRectangle(texto[4], buff = 0.5*SMALL_BUFF) 231 | self.play(Write(texto)) 232 | self.wait(.5) 233 | self.play(ShowCreation(marco)) 234 | self.wait(2) 235 | 236 | class Encuadre2(Scene): 237 | def construct(self): 238 | texto=TexMobject( 239 | "\\hat g(", "f", ")", "=", "\\int", "_{t_1}", "^{t_{2}}", 240 | "g(", "t", ")", "e", "^{-2\\pi i", "f", "t}", "dt" 241 | ) 242 | seleccion=VGroup(texto[4],texto[5],texto[6]) 243 | marco = SurroundingRectangle(seleccion, buff = 0.5*SMALL_BUFF) 244 | marco.set_stroke(GREEN,9) 245 | self.play(Write(texto)) 246 | self.wait(.5) 247 | self.play(ShowCreation(marco)) 248 | self.wait(2) 249 | 250 | class Llave(Scene): 251 | def construct(self): 252 | texto=TexMobject( 253 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 254 | "g(x)\\frac{d}{dx}f(x)" 255 | ) 256 | self.play(Write(texto)) 257 | llave_s = Brace(texto[1], UP, buff = SMALL_BUFF) 258 | llave_i = Brace(texto[3], DOWN, buff = SMALL_BUFF) 259 | t_s = llave_s.get_text("$g'f$") 260 | t_i = llave_i.get_text("$f'g$") 261 | self.play( 262 | GrowFromCenter(llave_s), 263 | GrowFromCenter(llave_i), 264 | FadeIn(t_s), 265 | FadeIn(t_i) 266 | ) 267 | self.wait() -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/AparicionDesaparicionTexto1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/AparicionDesaparicionTexto1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/AparicionDesaparicionTexto2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/AparicionDesaparicionTexto2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/CambioTamanho.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/CambioTamanho.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ColorPorCaracter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ColorPorCaracter.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ColorPorCaracterCorregida.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ColorPorCaracterCorregida.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ColorTexto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ColorTexto.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ColoreadoTexto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ColoreadoTexto.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/EfectoAparicionTexto3.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/Encuadre1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/Encuadre1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/Encuadre2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/Encuadre2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/For2Variables.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/For2Variables.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ForLista.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ForLista.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ForRango1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ForRango1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/ForRango2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/ForRango2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor3.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor3Mejorada.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor3Mejorada.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor3Mejorada2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor3Mejorada2.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/FormulaColor4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/FormulaColor4.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/Llave.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/Llave.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/Tachado1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/Tachado1.gif -------------------------------------------------------------------------------- /Español/2_efectos_arreglos_texto/gifs/Tachado2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/2_efectos_arreglos_texto/gifs/Tachado2.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # Transformaciones y copiado de texto 2 | ## Programas 3 | ### 4 | ```python3 5 | class TransformacionTexto1v1(Scene): 6 | def construct(self): 7 | texto1 = TextMobject("Primer texto") 8 | texto2 = TextMobject("Segundo texto") 9 | self.play(Write(texto1)) 10 | self.wait() 11 | self.play(Transform(texto1,texto2)) 12 | self.wait() 13 | ``` 14 |

15 | 16 | ### 17 | ```python3 18 | class TransformacionTexto1v2(Scene): 19 | def construct(self): 20 | texto1 = TextMobject("Primer texto") 21 | texto1.to_edge(UP) 22 | texto2 = TextMobject("Segundo texto") 23 | self.play(Write(texto1)) 24 | self.wait() 25 | self.play(Transform(texto1,texto2)) 26 | self.wait() 27 | ``` 28 |

29 | 30 | ### 31 | ```python3 32 | class TransformacionTexto2(Scene): 33 | def construct(self): 34 | texto1 = TextMobject("Función") 35 | texto2 = TextMobject("Derivada") 36 | texto3 = TextMobject("Integral") 37 | texto4 = TextMobject("Transformada") 38 | self.play(Write(texto1)) 39 | self.wait() 40 | #Trans texto1 -> texto2 41 | self.play(ReplacementTransform(texto1,texto2)) 42 | self.wait() 43 | #Trans texto2 -> texto3 44 | self.play(ReplacementTransform(texto2,texto3)) 45 | self.wait() 46 | #Trans texto3 -> texto4 47 | self.play(ReplacementTransform(texto3,texto4)) 48 | self.wait() 49 | ``` 50 |

51 | 52 | ### 53 | ```python3 54 | class CopiadoTextoV1(Scene): 55 | def construct(self): 56 | formula = TexMobject("\\frac{d}{dx}", 57 | "(","u","+","v",")","=", 58 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 59 | ) 60 | formula.scale(2) 61 | self.play(Write(formula[0:7])) 62 | self.wait() 63 | self.play( 64 | ReplacementTransform(formula[2].copy(),formula[8]), 65 | ReplacementTransform(formula[4].copy(),formula[11]), 66 | ReplacementTransform(formula[3].copy(),formula[9]) 67 | ) 68 | self.wait() 69 | self.play( 70 | ReplacementTransform(formula[0].copy(),formula[7]), 71 | ReplacementTransform(formula[0].copy(),formula[10]) 72 | ) 73 | self.wait() 74 | ``` 75 |

76 | 77 | ### 78 | ```python3 79 | class CopiadoTextoV2(Scene): 80 | def construct(self): 81 | formula = TexMobject("\\frac{d}{dx}", 82 | "(","u","+","v",")","=", 83 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 84 | ) 85 | formula.scale(2) 86 | self.play(Write(formula[0:7])) 87 | self.wait() 88 | self.play( 89 | ReplacementTransform(formula[2].copy(),formula[8]), 90 | ReplacementTransform(formula[4].copy(),formula[11]), 91 | ReplacementTransform(formula[3].copy(),formula[9]), 92 | run_time=3 93 | ) 94 | self.wait() 95 | self.play( 96 | ReplacementTransform(formula[0].copy(),formula[7]), 97 | ReplacementTransform(formula[0].copy(),formula[10]), 98 | run_time=3 99 | ) 100 | self.wait() 101 | ``` 102 |

103 | 104 | ### 105 | ```python3 106 | class CopiadoTextoV3(Scene): 107 | def construct(self): 108 | formula = TexMobject("\\frac{d}{dx}", 109 | "(","u","+","v",")","=", 110 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 111 | ) 112 | formula.scale(2) 113 | formula[8].set_color(RED) 114 | formula[11].set_color(BLUE) 115 | self.play(Write(formula[0:7])) 116 | self.wait() 117 | self.play( 118 | ReplacementTransform(formula[2].copy(),formula[8]), 119 | ReplacementTransform(formula[4].copy(),formula[11]), 120 | ReplacementTransform(formula[3].copy(),formula[9]), 121 | run_time=3 122 | ) 123 | self.wait() 124 | self.play( 125 | ReplacementTransform(formula[0].copy(),formula[7]), 126 | ReplacementTransform(formula[0].copy(),formula[10]), 127 | run_time=3 128 | ) 129 | self.wait() 130 | ``` 131 |

132 | 133 | ### 134 | ```python3 135 | class CopiadoTextoV4(Scene): 136 | def construct(self): 137 | formula = TexMobject("\\frac{d}{dx}", 138 | "(","u","+","v",")","=", 139 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 140 | ) 141 | formula.scale(2) 142 | for letra,color in [("u",RED),("v",BLUE)]: 143 | formula.set_color_by_tex(letra,color) 144 | self.play(Write(formula[0:7])) 145 | self.wait() 146 | self.play( 147 | ReplacementTransform(formula[2].copy(),formula[8]), 148 | ReplacementTransform(formula[4].copy(),formula[11]), 149 | ReplacementTransform(formula[3].copy(),formula[9]), 150 | run_time=3 151 | ) 152 | self.wait() 153 | self.play( 154 | ReplacementTransform(formula[0].copy(),formula[7]), 155 | ReplacementTransform(formula[0].copy(),formula[10]), 156 | run_time=3 157 | ) 158 | self.wait() 159 | ``` 160 |

161 | 162 | ### 163 | ```python3 164 | class CopiadoDosFormulas1(Scene): 165 | def construct(self): 166 | formula1 = TexMobject( 167 | "\\neg","\\forall","x",":","P(x)" 168 | ) 169 | formula2 = TexMobject( 170 | "\\exists","x",":","\\neg","P(x)" 171 | ) 172 | for tam,pos,formula in [(2,2*UP,formula1),(2,2*DOWN,formula2)]: 173 | formula.scale(tam) 174 | formula.move_to(pos) 175 | self.play(Write(formula1)) 176 | self.wait() 177 | cambios = [ 178 | [(0,1,2,3,4),(3,0,1,2,4)], 179 | ] 180 | for pre_ind,post_ind in cambios: 181 | self.play(*[ 182 | ReplacementTransform( 183 | formula1[i].copy(),formula2[j] 184 | ) 185 | for i,j in zip(pre_ind,post_ind) 186 | ], 187 | run_time=2 188 | ) 189 | self.wait() 190 | ``` 191 |

192 | 193 | ### 194 | ```python3 195 | class CopiadoDosFormulas2(Scene): 196 | def construct(self): 197 | formula1 = TexMobject( 198 | "\\neg","\\forall","x",":","P(x)" 199 | ) 200 | formula2 = TexMobject( 201 | "\\exists","x",":","\\neg","P(x)" 202 | ) 203 | for tam,pos,formula in [(2,2*UP,formula1),(2,2*DOWN,formula2)]: 204 | formula.scale(tam) 205 | formula.move_to(pos) 206 | self.play(Write(formula1)) 207 | self.wait() 208 | cambios = [ 209 | [(2,3,4),(1,2,4)], 210 | [(0,),(3,)], 211 | [(1,),(0,)] 212 | ] 213 | for pre_ind,post_ind in cambios: 214 | self.play(*[ 215 | ReplacementTransform( 216 | formula1[i].copy(),formula2[j] 217 | ) 218 | for i,j in zip(pre_ind,post_ind) 219 | ], 220 | run_time=2 221 | ) 222 | self.wait() 223 | ``` 224 |

225 | 226 | ### 227 | ```python3 228 | class CopiadoDosFormulas2Color(Scene): 229 | def construct(self): 230 | formula1 = TexMobject( 231 | "\\neg","\\forall","x",":","P(x)" 232 | ) 233 | formula2 = TexMobject( 234 | "\\exists","x",":","\\neg","P(x)" 235 | ) 236 | parametros = [(2,2*UP,formula1,GREEN,"\\forall"), 237 | (2,2*DOWN,formula2,ORANGE,"\\exists")] 238 | for tam,pos,formula,col,sim in parametros: 239 | formula.scale(tam) 240 | formula.move_to(pos) 241 | formula.set_color_by_tex(sim,col) 242 | formula.set_color_by_tex("\\neg",PINK) 243 | self.play(Write(formula1)) 244 | self.wait() 245 | cambios = [ 246 | [(2,3,4),(1,2,4)], 247 | [(0,),(3,)], 248 | [(1,),(0,)] 249 | ] 250 | for pre_ind,post_ind in cambios: 251 | self.play(*[ 252 | ReplacementTransform( 253 | formula1[i].copy(),formula2[j] 254 | ) 255 | for i,j in zip(pre_ind,post_ind) 256 | ], 257 | run_time=2 258 | ) 259 | self.wait() 260 | ``` 261 |

262 | 263 | ### 264 | ```python3 265 | class CopiadoDosFormulas3(Scene): 266 | def construct(self): 267 | formula1 = TexMobject( 268 | "\\neg","\\forall","x",":","P(x)" 269 | ) 270 | formula2 = TexMobject( 271 | "\\exists","x",":","\\neg","P(x)" 272 | ) 273 | parametros = [(2,2*UP,formula1,GREEN,"\\forall"), 274 | (2,2*DOWN,formula2,ORANGE,"\\exists")] 275 | for tam,pos,formula,col,sim in parametros: 276 | formula.scale(tam) 277 | formula.move_to(pos) 278 | formula.set_color_by_tex(sim,col) 279 | formula.set_color_by_tex("\\neg",PINK) 280 | self.play(Write(formula1)) 281 | self.wait() 282 | cambios = [ 283 | [(2,3,4),(1,2,4)], 284 | [(0,),(3,)], 285 | [(1,),(0,)] 286 | ] 287 | for pre_ind,post_ind in cambios: 288 | self.play(*[ 289 | ReplacementTransform( 290 | formula1[i],formula2[j] 291 | ) 292 | for i,j in zip(pre_ind,post_ind) 293 | ], 294 | run_time=2 295 | ) 296 | self.wait() 297 | ``` 298 |

299 | 300 | ### 301 | ```python3 302 | class CambioColorTexto(Scene): 303 | def construct(self): 304 | texto = TextMobject("Texto") 305 | texto.scale(3) 306 | self.play(Write(texto)) 307 | self.wait() 308 | self.play( 309 | texto.set_color, YELLOW, 310 | run_time=2 311 | ) 312 | self.wait() 313 | ``` 314 |

315 | 316 | ### 317 | ```python3 318 | class AnimacionTamanho(Scene): 319 | def construct(self): 320 | texto = TextMobject("Texto") 321 | texto.scale(2) 322 | self.play(Write(texto)) 323 | self.wait() 324 | self.play( 325 | texto.scale, 3, 326 | run_time=2 327 | ) 328 | self.wait() 329 | ``` 330 |

331 | 332 | ### 333 | ```python3 334 | class MovimientoTexto(Scene): 335 | def construct(self): 336 | texto = TextMobject("Texto") 337 | texto.scale(2) 338 | texto.move_to(LEFT*2) 339 | self.play(Write(texto)) 340 | self.wait() 341 | self.play( 342 | texto.move_to, RIGHT*2, 343 | run_time=2, 344 | path_arc=0 #Sustituir 0 por otro valor, -np.pi 345 | ) 346 | self.wait() 347 | ``` 348 |

349 | 350 | ### 351 | ```python3 352 | class CambioPosicionTamanhoColorTexto(Scene): 353 | def construct(self): 354 | texto = TextMobject("Texto") 355 | texto.scale(2) 356 | texto.move_to(LEFT*2) 357 | self.play(Write(texto)) 358 | self.wait() 359 | self.play( 360 | texto.move_to, RIGHT*2, 361 | texto.scale, 2, 362 | texto.set_color, RED, 363 | run_time=2, 364 | ) 365 | self.wait() 366 | ``` 367 |

368 | -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/AnimacionTamanho.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/AnimacionTamanho.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CambioColorTexto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CambioColorTexto.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CambioPosicionTamanhoColorTexto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CambioPosicionTamanhoColorTexto.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoDosFormulas1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoDosFormulas1.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoDosFormulas2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoDosFormulas2.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoDosFormulas2Color.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoDosFormulas2Color.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoDosFormulas3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoDosFormulas3.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoTextoV1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoTextoV1.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoTextoV2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoTextoV2.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoTextoV3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoTextoV3.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/CopiadoTextoV4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/CopiadoTextoV4.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/MovimientoTexto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/MovimientoTexto.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/TransformacionTexto1v1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/TransformacionTexto1v1.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/TransformacionTexto1v2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/TransformacionTexto1v2.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/gifs/TransformacionTexto2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/3_transformaciones_texto/gifs/TransformacionTexto2.gif -------------------------------------------------------------------------------- /Español/3_transformaciones_texto/transformaciones_texto.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class TransformacionTexto1v1(Scene): 4 | def construct(self): 5 | texto1 = TextMobject("Primer texto") 6 | texto2 = TextMobject("Segundo texto") 7 | self.play(Write(texto1)) 8 | self.wait() 9 | self.play(Transform(texto1,texto2)) 10 | self.wait() 11 | 12 | class TransformacionTexto1v2(Scene): 13 | def construct(self): 14 | texto1 = TextMobject("Primer texto") 15 | texto1.to_edge(UP) 16 | texto2 = TextMobject("Segundo texto") 17 | self.play(Write(texto1)) 18 | self.wait() 19 | self.play(Transform(texto1,texto2)) 20 | self.wait() 21 | 22 | class TransformacionTexto2(Scene): 23 | def construct(self): 24 | texto1 = TextMobject("Función") 25 | texto2 = TextMobject("Derivada") 26 | texto3 = TextMobject("Integral") 27 | texto4 = TextMobject("Transformada") 28 | self.play(Write(texto1)) 29 | self.wait() 30 | #Trans texto1 -> texto2 31 | self.play(ReplacementTransform(texto1,texto2)) 32 | self.wait() 33 | #Trans texto2 -> texto3 34 | self.play(ReplacementTransform(texto2,texto3)) 35 | self.wait() 36 | #Trans texto3 -> texto4 37 | self.play(ReplacementTransform(texto3,texto4)) 38 | self.wait() 39 | 40 | class CopiadoTextoV1(Scene): 41 | def construct(self): 42 | formula = TexMobject("\\frac{d}{dx}", 43 | "(","u","+","v",")","=", 44 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 45 | ) 46 | formula.scale(2) 47 | self.play(Write(formula[0:7])) 48 | self.wait() 49 | self.play( 50 | ReplacementTransform(formula[2].copy(),formula[8]), 51 | ReplacementTransform(formula[4].copy(),formula[11]), 52 | ReplacementTransform(formula[3].copy(),formula[9]) 53 | ) 54 | self.wait() 55 | self.play( 56 | ReplacementTransform(formula[0].copy(),formula[7]), 57 | ReplacementTransform(formula[0].copy(),formula[10]) 58 | ) 59 | self.wait() 60 | 61 | class CopiadoTextoV2(Scene): 62 | def construct(self): 63 | formula = TexMobject("\\frac{d}{dx}", 64 | "(","u","+","v",")","=", 65 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 66 | ) 67 | formula.scale(2) 68 | self.play(Write(formula[0:7])) 69 | self.wait() 70 | self.play( 71 | ReplacementTransform(formula[2].copy(),formula[8]), 72 | ReplacementTransform(formula[4].copy(),formula[11]), 73 | ReplacementTransform(formula[3].copy(),formula[9]), 74 | run_time=3 75 | ) 76 | self.wait() 77 | self.play( 78 | ReplacementTransform(formula[0].copy(),formula[7]), 79 | ReplacementTransform(formula[0].copy(),formula[10]), 80 | run_time=3 81 | ) 82 | self.wait() 83 | 84 | class CopiadoTextoV3(Scene): 85 | def construct(self): 86 | formula = TexMobject("\\frac{d}{dx}", 87 | "(","u","+","v",")","=", 88 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 89 | ) 90 | formula.scale(2) 91 | formula[8].set_color(RED) 92 | formula[11].set_color(BLUE) 93 | self.play(Write(formula[0:7])) 94 | self.wait() 95 | self.play( 96 | ReplacementTransform(formula[2].copy(),formula[8]), 97 | ReplacementTransform(formula[4].copy(),formula[11]), 98 | ReplacementTransform(formula[3].copy(),formula[9]), 99 | run_time=3 100 | ) 101 | self.wait() 102 | self.play( 103 | ReplacementTransform(formula[0].copy(),formula[7]), 104 | ReplacementTransform(formula[0].copy(),formula[10]), 105 | run_time=3 106 | ) 107 | self.wait() 108 | 109 | class CopiadoTextoV4(Scene): 110 | def construct(self): 111 | formula = TexMobject("\\frac{d}{dx}", 112 | "(","u","+","v",")","=", 113 | "\\frac{d}{dx}","u","+","\\frac{d}{dx}","v" 114 | ) 115 | formula.scale(2) 116 | for letra,color in [("u",RED),("v",BLUE)]: 117 | formula.set_color_by_tex(letra,color) 118 | self.play(Write(formula[0:7])) 119 | self.wait() 120 | self.play( 121 | ReplacementTransform(formula[2].copy(),formula[8]), 122 | ReplacementTransform(formula[4].copy(),formula[11]), 123 | ReplacementTransform(formula[3].copy(),formula[9]), 124 | run_time=3 125 | ) 126 | self.wait() 127 | self.play( 128 | ReplacementTransform(formula[0].copy(),formula[7]), 129 | ReplacementTransform(formula[0].copy(),formula[10]), 130 | run_time=3 131 | ) 132 | self.wait() 133 | 134 | class CopiadoDosFormulas1(Scene): 135 | def construct(self): 136 | formula1 = TexMobject( 137 | "\\neg","\\forall","x",":","P(x)" 138 | ) 139 | formula2 = TexMobject( 140 | "\\exists","x",":","\\neg","P(x)" 141 | ) 142 | for tam,pos,formula in [(2,2*UP,formula1),(2,2*DOWN,formula2)]: 143 | formula.scale(tam) 144 | formula.move_to(pos) 145 | self.play(Write(formula1)) 146 | self.wait() 147 | cambios = [ 148 | [(0,1,2,3,4),(3,0,1,2,4)], 149 | ] 150 | for pre_ind,post_ind in cambios: 151 | self.play(*[ 152 | ReplacementTransform( 153 | formula1[i].copy(),formula2[j] 154 | ) 155 | for i,j in zip(pre_ind,post_ind) 156 | ], 157 | run_time=2 158 | ) 159 | self.wait() 160 | 161 | class CopiadoDosFormulas2(Scene): 162 | def construct(self): 163 | formula1 = TexMobject( 164 | "\\neg","\\forall","x",":","P(x)" 165 | ) 166 | formula2 = TexMobject( 167 | "\\exists","x",":","\\neg","P(x)" 168 | ) 169 | for tam,pos,formula in [(2,2*UP,formula1),(2,2*DOWN,formula2)]: 170 | formula.scale(tam) 171 | formula.move_to(pos) 172 | self.play(Write(formula1)) 173 | self.wait() 174 | cambios = [ 175 | [(2,3,4),(1,2,4)], 176 | [(0,),(3,)], 177 | [(1,),(0,)] 178 | ] 179 | for pre_ind,post_ind in cambios: 180 | self.play(*[ 181 | ReplacementTransform( 182 | formula1[i].copy(),formula2[j] 183 | ) 184 | for i,j in zip(pre_ind,post_ind) 185 | ], 186 | run_time=2 187 | ) 188 | self.wait() 189 | 190 | class CopiadoDosFormulas2Color(Scene): 191 | def construct(self): 192 | formula1 = TexMobject( 193 | "\\neg","\\forall","x",":","P(x)" 194 | ) 195 | formula2 = TexMobject( 196 | "\\exists","x",":","\\neg","P(x)" 197 | ) 198 | parametros = [(2,2*UP,formula1,GREEN,"\\forall"), 199 | (2,2*DOWN,formula2,ORANGE,"\\exists")] 200 | for tam,pos,formula,col,sim in parametros: 201 | formula.scale(tam) 202 | formula.move_to(pos) 203 | formula.set_color_by_tex(sim,col) 204 | formula.set_color_by_tex("\\neg",PINK) 205 | self.play(Write(formula1)) 206 | self.wait() 207 | cambios = [ 208 | [(2,3,4),(1,2,4)], 209 | [(0,),(3,)], 210 | [(1,),(0,)] 211 | ] 212 | for pre_ind,post_ind in cambios: 213 | self.play(*[ 214 | ReplacementTransform( 215 | formula1[i].copy(),formula2[j] 216 | ) 217 | for i,j in zip(pre_ind,post_ind) 218 | ], 219 | run_time=2 220 | ) 221 | self.wait() 222 | 223 | class CopiadoDosFormulas3(Scene): 224 | def construct(self): 225 | formula1 = TexMobject( 226 | "\\neg","\\forall","x",":","P(x)" 227 | ) 228 | formula2 = TexMobject( 229 | "\\exists","x",":","\\neg","P(x)" 230 | ) 231 | parametros = [(2,2*UP,formula1,GREEN,"\\forall"), 232 | (2,2*DOWN,formula2,ORANGE,"\\exists")] 233 | for tam,pos,formula,col,sim in parametros: 234 | formula.scale(tam) 235 | formula.move_to(pos) 236 | formula.set_color_by_tex(sim,col) 237 | formula.set_color_by_tex("\\neg",PINK) 238 | self.play(Write(formula1)) 239 | self.wait() 240 | cambios = [ 241 | [(2,3,4),(1,2,4)], 242 | [(0,),(3,)], 243 | [(1,),(0,)] 244 | ] 245 | for pre_ind,post_ind in cambios: 246 | self.play(*[ 247 | ReplacementTransform( 248 | formula1[i],formula2[j] 249 | ) 250 | for i,j in zip(pre_ind,post_ind) 251 | ], 252 | run_time=2 253 | ) 254 | self.wait() 255 | 256 | class CambioColorTexto(Scene): 257 | def construct(self): 258 | texto = TextMobject("Texto") 259 | texto.scale(3) 260 | self.play(Write(texto)) 261 | self.wait() 262 | self.play( 263 | texto.set_color, YELLOW, 264 | run_time=2 265 | ) 266 | self.wait() 267 | 268 | class AnimacionTamanho(Scene): 269 | def construct(self): 270 | texto = TextMobject("Texto") 271 | texto.scale(2) 272 | self.play(Write(texto)) 273 | self.wait() 274 | self.play( 275 | texto.scale, 3, 276 | run_time=2 277 | ) 278 | self.wait() 279 | 280 | class MovimientoTexto(Scene): 281 | def construct(self): 282 | texto = TextMobject("Texto") 283 | texto.scale(2) 284 | texto.move_to(LEFT*2) 285 | self.play(Write(texto)) 286 | self.wait() 287 | self.play( 288 | texto.move_to, RIGHT*2, 289 | run_time=2, 290 | path_arc=0 #Sustituir 0 por otro valor, -np.pi 291 | ) 292 | self.wait() 293 | 294 | class CambioPosicionTamanhoColorTexto(Scene): 295 | def construct(self): 296 | texto = TextMobject("Texto") 297 | texto.scale(2) 298 | texto.move_to(LEFT*2) 299 | self.play(Write(texto)) 300 | self.wait() 301 | self.play( 302 | texto.move_to, RIGHT*2, 303 | texto.scale, 2, 304 | texto.set_color, RED, 305 | run_time=2, 306 | ) 307 | self.wait() -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # Herramientas visuales (llaves, cuadros, flechas y lineas) 2 | ## Programas 3 | ### 4 | ```python3 5 | class MovimientoLlaves(Scene): 6 | def construct(self): 7 | texto=TexMobject( 8 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 9 | "g(x)\\frac{d}{dx}f(x)" 10 | ) 11 | self.play(Write(texto)) 12 | llave1 = Brace(texto[1], UP, buff = SMALL_BUFF) 13 | llave2 = Brace(texto[3], UP, buff = SMALL_BUFF) 14 | t1 = llave1.get_text("$g'f$") 15 | t2 = llave2.get_text("$f'g$") 16 | self.play( 17 | GrowFromCenter(llave1), 18 | FadeIn(t1), 19 | ) 20 | self.wait() 21 | self.play( 22 | ReplacementTransform(llave1,llave2), 23 | ReplacementTransform(t1,t2) 24 | ) 25 | self.wait() 26 | ``` 27 |

28 | 29 | ### 30 | ```python3 31 | class MovimientoLlavesCopia(Scene): 32 | def construct(self): 33 | texto=TexMobject( 34 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 35 | "g(x)\\frac{d}{dx}f(x)" 36 | ) 37 | self.play(Write(texto)) 38 | llave1 = Brace(texto[1], UP, buff = SMALL_BUFF) 39 | llave2 = Brace(texto[3], UP, buff = SMALL_BUFF) 40 | t1 = llave1.get_text("$g'f$") 41 | t2 = llave2.get_text("$f'g$") 42 | self.play( 43 | GrowFromCenter(llave1), 44 | FadeIn(t1), 45 | ) 46 | self.wait() 47 | self.play( 48 | ReplacementTransform(llave1.copy(),llave2), 49 | ReplacementTransform(t1.copy(),t2) 50 | ) 51 | self.wait() 52 | ``` 53 |

54 | 55 | ### 56 | ```python3 57 | class MovimientoEncuadre(Scene): 58 | def construct(self): 59 | texto=TexMobject( 60 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 61 | "g(x)\\frac{d}{dx}f(x)" 62 | ) 63 | self.play(Write(texto)) 64 | marco1 = SurroundingRectangle(texto[1], buff = .1) 65 | marco2 = SurroundingRectangle(texto[3], buff = .1) 66 | self.play( 67 | ShowCreation(marco1), 68 | ) 69 | self.wait() 70 | self.play( 71 | ReplacementTransform(marco1,marco2), 72 | ) 73 | self.wait() 74 | ``` 75 |

76 | 77 | ### 78 | ```python3 79 | class MovimientoEncuadreCopia(Scene): 80 | def construct(self): 81 | texto=TexMobject( 82 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 83 | "g(x)\\frac{d}{dx}f(x)" 84 | ) 85 | self.play(Write(texto)) 86 | marco1 = SurroundingRectangle(texto[1], buff = .1) 87 | marco2 = SurroundingRectangle(texto[3], buff = .1) 88 | self.play(ShowCreation(marco1)) 89 | self.wait() 90 | self.play( 91 | ReplacementTransform(marco1.copy(),marco2), 92 | path_arc=-np.pi 93 | ) 94 | self.wait() 95 | ``` 96 |

97 | 98 | ### 99 | ```python3 100 | class MovimientoEncuadreCopia2(Scene): 101 | def construct(self): 102 | texto=TexMobject( 103 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 104 | "g(x)\\frac{d}{dx}f(x)" 105 | ) 106 | self.play(Write(texto)) 107 | marco1 = SurroundingRectangle(texto[1], buff = .1) 108 | marco2 = SurroundingRectangle(texto[3], buff = .1) 109 | t1 = TexMobject("g'f") 110 | t2 = TexMobject("f'g") 111 | t1.next_to(marco1, UP, buff=0.1) 112 | t2.next_to(marco2, UP, buff=0.1) 113 | self.play( 114 | ShowCreation(marco1), 115 | FadeIn(t1) 116 | ) 117 | self.wait() 118 | self.play( 119 | ReplacementTransform(marco1.copy(),marco2), 120 | ReplacementTransform(t1.copy(),t2), 121 | ) 122 | self.wait() 123 | ``` 124 |

125 | 126 | ### 127 | ```python3 128 | class Flecha1(Scene): 129 | def construct(self): 130 | paso1 = TextMobject("Paso 1") 131 | paso2 = TextMobject("Paso 2") 132 | flecha = Arrow(LEFT,RIGHT) 133 | paso1.move_to(LEFT*2) 134 | flecha.next_to(paso1,RIGHT,buff = .1) 135 | paso2.next_to(flecha,RIGHT,buff = .1) 136 | self.play(Write(paso1)) 137 | self.wait() 138 | self.play(GrowArrow(flecha)) 139 | self.play(Write(paso2)) 140 | self.wait() 141 | ``` 142 |

143 | 144 | ### 145 | ```python3 146 | class Flecha2(Scene): 147 | def construct(self): 148 | paso1 = TextMobject("Paso 1") 149 | paso2 = TextMobject("Paso 2") 150 | paso1.move_to(LEFT*2+DOWN*2) 151 | paso2.move_to(4*RIGHT+2*UP) 152 | flecha1 = Arrow(paso1.get_right(),paso2.get_left(),buff=0.1) 153 | flecha1.set_color(RED) 154 | flecha2 = Arrow(paso1.get_top(),paso2.get_bottom(),buff=0.1) 155 | flecha2.set_color(BLUE) 156 | self.play(Write(paso1),Write(paso2)) 157 | self.play(GrowArrow(flecha1)) 158 | self.play(GrowArrow(flecha2)) 159 | self.wait() 160 | ``` 161 |

162 | 163 | ### 164 | ```python3 165 | class LineaDiscontinua(Scene): 166 | def construct(self): 167 | paso1 = TextMobject("Paso 1") 168 | paso2 = TextMobject("Paso 2") 169 | paso1.move_to(LEFT*2+DOWN*2) 170 | paso2.move_to(4*RIGHT+2*UP) 171 | linea1 = DashedLine(paso1.get_right(),paso2.get_left(),buff=0.1) 172 | linea1.set_color(RED) 173 | linea2 = Line(paso1.get_top(),paso2.get_bottom(),buff=0.1) 174 | linea2.set_color(BLUE) 175 | self.play(Write(paso1),Write(paso2)) 176 | self.play(ShowCreation(linea1)) 177 | self.play(ShowCreation(linea2)) 178 | self.wait() 179 | ``` 180 |

181 | 182 | ### 183 | ```python3 184 | class AnimacionLinea1(Scene): 185 | def construct(self): 186 | paso1 = TextMobject("Paso 1") 187 | paso2 = TextMobject("Paso 2") 188 | paso1.move_to(LEFT*2+DOWN*2) 189 | paso2.move_to(4*RIGHT+2*UP) 190 | linea = Line(paso1.get_right(),paso2.get_left(),buff=0.1) 191 | self.play(Write(paso1),Write(paso2)) 192 | self.play(GrowArrow(linea)) 193 | self.play( 194 | paso2.next_to, paso2, LEFT*2, 195 | ) 196 | self.wait() 197 | ``` 198 |

199 | 200 | ### 201 | ```python3 202 | class AnimacionLinea2(Scene): 203 | def construct(self): 204 | paso1 = TextMobject("Paso 1") 205 | paso2 = TextMobject("Paso 2") 206 | paso3 = paso2.copy() 207 | paso1.move_to(LEFT*2+DOWN*2) 208 | paso2.move_to(4*RIGHT+2*UP) 209 | paso3.next_to(paso2, LEFT*2) 210 | linea = Line(paso1.get_right(),paso2.get_left(),buff=0.1) 211 | lineaCopia = Line(paso1.get_right(),paso3.get_bottom(),buff=0.1) 212 | self.play(Write(paso1),Write(paso2)) 213 | self.play(GrowArrow(linea)) 214 | self.play( 215 | ReplacementTransform(paso2,paso3), 216 | ReplacementTransform(linea,lineaCopia) 217 | ) 218 | self.wait() 219 | ``` 220 |

221 | 222 | 223 | -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/AnimacionLinea1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/AnimacionLinea1.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/AnimacionLinea2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/AnimacionLinea2.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/Flecha1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/Flecha1.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/Flecha2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/Flecha2.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/LineaDiscontinua.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/LineaDiscontinua.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/MovimientoEncuadre.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/MovimientoEncuadre.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/MovimientoEncuadreCopia.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/MovimientoEncuadreCopia.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/MovimientoEncuadreCopia2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/MovimientoEncuadreCopia2.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/MovimientoLlaves.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/MovimientoLlaves.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/gifs/MovimientoLlavesCopia.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/4_herramientas_visuales/gifs/MovimientoLlavesCopia.gif -------------------------------------------------------------------------------- /Español/4_herramientas_visuales/herramientas_visuales.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class MovimientoLlaves(Scene): 4 | def construct(self): 5 | texto=TexMobject( 6 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 7 | "g(x)\\frac{d}{dx}f(x)" 8 | ) 9 | self.play(Write(texto)) 10 | llave1 = Brace(texto[1], UP, buff = SMALL_BUFF) 11 | llave2 = Brace(texto[3], UP, buff = SMALL_BUFF) 12 | t1 = llave1.get_text("$g'f$") 13 | t2 = llave2.get_text("$f'g$") 14 | self.play( 15 | GrowFromCenter(llave1), 16 | FadeIn(t1), 17 | ) 18 | self.wait() 19 | self.play( 20 | ReplacementTransform(llave1,llave2), 21 | ReplacementTransform(t1,t2) 22 | ) 23 | self.wait() 24 | 25 | class MovimientoLlavesCopia(Scene): 26 | def construct(self): 27 | texto=TexMobject( 28 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 29 | "g(x)\\frac{d}{dx}f(x)" 30 | ) 31 | self.play(Write(texto)) 32 | llave1 = Brace(texto[1], UP, buff = SMALL_BUFF) 33 | llave2 = Brace(texto[3], UP, buff = SMALL_BUFF) 34 | t1 = llave1.get_text("$g'f$") 35 | t2 = llave2.get_text("$f'g$") 36 | self.play( 37 | GrowFromCenter(llave1), 38 | FadeIn(t1), 39 | ) 40 | self.wait() 41 | self.play( 42 | ReplacementTransform(llave1.copy(),llave2), 43 | ReplacementTransform(t1.copy(),t2) 44 | ) 45 | self.wait() 46 | 47 | class MovimientoEncuadre(Scene): 48 | def construct(self): 49 | texto=TexMobject( 50 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 51 | "g(x)\\frac{d}{dx}f(x)" 52 | ) 53 | self.play(Write(texto)) 54 | marco1 = SurroundingRectangle(texto[1], buff = .1) 55 | marco2 = SurroundingRectangle(texto[3], buff = .1) 56 | self.play( 57 | ShowCreation(marco1), 58 | ) 59 | self.wait() 60 | self.play( 61 | ReplacementTransform(marco1,marco2), 62 | ) 63 | self.wait() 64 | 65 | class MovimientoEncuadreCopia(Scene): 66 | def construct(self): 67 | texto=TexMobject( 68 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 69 | "g(x)\\frac{d}{dx}f(x)" 70 | ) 71 | self.play(Write(texto)) 72 | marco1 = SurroundingRectangle(texto[1], buff = .1) 73 | marco2 = SurroundingRectangle(texto[3], buff = .1) 74 | self.play(ShowCreation(marco1)) 75 | self.wait() 76 | self.play( 77 | ReplacementTransform(marco1.copy(),marco2), 78 | path_arc=-np.pi 79 | ) 80 | self.wait() 81 | 82 | class MovimientoEncuadreCopia2(Scene): 83 | def construct(self): 84 | texto=TexMobject( 85 | "\\frac{d}{dx}f(x)g(x)=","f(x)\\frac{d}{dx}g(x)","+", 86 | "g(x)\\frac{d}{dx}f(x)" 87 | ) 88 | self.play(Write(texto)) 89 | marco1 = SurroundingRectangle(texto[1], buff = .1) 90 | marco2 = SurroundingRectangle(texto[3], buff = .1) 91 | t1 = TexMobject("g'f") 92 | t2 = TexMobject("f'g") 93 | t1.next_to(marco1, UP, buff=0.1) 94 | t2.next_to(marco2, UP, buff=0.1) 95 | self.play( 96 | ShowCreation(marco1), 97 | FadeIn(t1) 98 | ) 99 | self.wait() 100 | self.play( 101 | ReplacementTransform(marco1.copy(),marco2), 102 | ReplacementTransform(t1.copy(),t2), 103 | ) 104 | self.wait() 105 | 106 | class Flecha1(Scene): 107 | def construct(self): 108 | paso1 = TextMobject("Paso 1") 109 | paso2 = TextMobject("Paso 2") 110 | flecha = Arrow(LEFT,RIGHT) 111 | paso1.move_to(LEFT*2) 112 | flecha.next_to(paso1,RIGHT,buff = .1) 113 | paso2.next_to(flecha,RIGHT,buff = .1) 114 | self.play(Write(paso1)) 115 | self.wait() 116 | self.play(GrowArrow(flecha)) 117 | self.play(Write(paso2)) 118 | self.wait() 119 | 120 | class Flecha2(Scene): 121 | def construct(self): 122 | paso1 = TextMobject("Paso 1") 123 | paso2 = TextMobject("Paso 2") 124 | paso1.move_to(LEFT*2+DOWN*2) 125 | paso2.move_to(4*RIGHT+2*UP) 126 | flecha1 = Arrow(paso1.get_right(),paso2.get_left(),buff=0.1) 127 | flecha1.set_color(RED) 128 | flecha2 = Arrow(paso1.get_top(),paso2.get_bottom(),buff=0.1) 129 | flecha2.set_color(BLUE) 130 | self.play(Write(paso1),Write(paso2)) 131 | self.play(GrowArrow(flecha1)) 132 | self.play(GrowArrow(flecha2)) 133 | self.wait() 134 | 135 | class Linea(Scene): 136 | def construct(self): 137 | paso1 = TextMobject("Paso 1") 138 | paso2 = TextMobject("Paso 2") 139 | paso1.move_to(LEFT*2+DOWN*2) 140 | paso2.move_to(4*RIGHT+2*UP) 141 | linea1 = Line(paso1.get_right(),paso2.get_left(),buff=0.1) 142 | linea1.set_color(RED) 143 | linea2 = Line(paso1.get_top(),paso2.get_bottom(),buff=0.1) 144 | linea2.set_color(BLUE) 145 | self.play(Write(paso1),Write(paso2)) 146 | self.play(ShowCreation(linea1)) 147 | self.play(ShowCreation(linea2)) 148 | self.wait() 149 | 150 | class LineaDiscontinua(Scene): 151 | def construct(self): 152 | paso1 = TextMobject("Paso 1") 153 | paso2 = TextMobject("Paso 2") 154 | paso1.move_to(LEFT*2+DOWN*2) 155 | paso2.move_to(4*RIGHT+2*UP) 156 | linea1 = DashedLine(paso1.get_right(),paso2.get_left(),buff=0.1) 157 | linea1.set_color(RED) 158 | linea2 = Line(paso1.get_top(),paso2.get_bottom(),buff=0.1) 159 | linea2.set_color(BLUE) 160 | self.play(Write(paso1),Write(paso2)) 161 | self.play(ShowCreation(linea1)) 162 | self.play(ShowCreation(linea2)) 163 | self.wait() 164 | 165 | class AnimacionLinea1(Scene): 166 | def construct(self): 167 | paso1 = TextMobject("Paso 1") 168 | paso2 = TextMobject("Paso 2") 169 | paso1.move_to(LEFT*2+DOWN*2) 170 | paso2.move_to(4*RIGHT+2*UP) 171 | linea = Line(paso1.get_right(),paso2.get_left(),buff=0.1) 172 | self.play(Write(paso1),Write(paso2)) 173 | self.play(GrowArrow(linea)) 174 | self.play( 175 | paso2.next_to, paso2, LEFT*2, 176 | ) 177 | self.wait() 178 | 179 | class AnimacionLinea2(Scene): 180 | def construct(self): 181 | paso1 = TextMobject("Paso 1") 182 | paso2 = TextMobject("Paso 2") 183 | paso3 = paso2.copy() 184 | paso1.move_to(LEFT*2+DOWN*2) 185 | paso2.move_to(4*RIGHT+2*UP) 186 | paso3.next_to(paso2, LEFT*2) 187 | linea = Line(paso1.get_right(),paso2.get_left(),buff=0.1) 188 | lineaCopia = Line(paso1.get_right(),paso3.get_bottom(),buff=0.1) 189 | self.play(Write(paso1),Write(paso2)) 190 | self.play(GrowArrow(linea)) 191 | self.play( 192 | ReplacementTransform(paso2,paso3), 193 | ReplacementTransform(linea,lineaCopia) 194 | ) 195 | self.wait() -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/Introduccion_graficas.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class Grafica1(GraphScene): 4 | CONFIG = { 5 | "y_max" : 50, 6 | "y_min" : 0, 7 | "x_max" : 7, 8 | "x_min" : 0, 9 | "y_tick_frequency" : 5, #Subdivisiones de y 10 | "x_tick_frequency" : 1, #Subdivisiones de x 11 | "axes_color" : BLUE, #Color de los ejes XY 12 | } 13 | def construct(self): 14 | self.setup_axes(animate=True) #animate=True para animar al mostrar los ejes 15 | #Definición de gráfica 16 | grafica = self.get_graph(lambda x : x**2, # Función en numpy 17 | color = GREEN, 18 | x_min = 2, # Dominio 19 | x_max = 4 20 | ) 21 | #Animar creación de gráfica 22 | self.play( 23 | ShowCreation(grafica), 24 | run_time = 2 25 | ) 26 | self.wait() 27 | 28 | class Grafica1v2(GraphScene): 29 | CONFIG = { 30 | "y_max" : 50, 31 | "y_min" : 0, 32 | "x_max" : 7, 33 | "x_min" : 0, 34 | "y_tick_frequency" : 5, 35 | "x_tick_frequency" : 1, 36 | "axes_color" : BLUE, # x y z 37 | "graph_origin" : np.array((0,0,0)) # Origen de la gráfica, se puede usar LEFT,... 38 | } 39 | def construct(self): 40 | self.setup_axes(animate=True) 41 | grafica = self.get_graph(lambda x : x**2, 42 | color = GREEN, 43 | x_min = 2, 44 | x_max = 4 45 | ) 46 | self.play( 47 | ShowCreation(grafica), 48 | run_time = 2 49 | ) 50 | self.wait() 51 | 52 | class Grafica2(GraphScene): 53 | CONFIG = { 54 | "y_max" : 50, 55 | "y_min" : 0, 56 | "x_max" : 7, 57 | "x_min" : 0, 58 | "y_tick_frequency" : 5, 59 | "axes_color" : BLUE, 60 | "x_axis_label" : "$t$", # Etiqueta de eje x 61 | "y_axis_label" : "$f(t)$", # Etiqueta de eje y 62 | } 63 | def construct(self): 64 | self.setup_axes() #Ya no usar animate=True 65 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 66 | self.play( 67 | ShowCreation(grafica), 68 | run_time = 2 69 | ) 70 | self.wait() 71 | # Modificación de los ejes 72 | def setup_axes(self): 73 | # Linea por defecto 74 | GraphScene.setup_axes(self) 75 | # Parámetros de las etiquetas de los ejes 76 | # Para x 77 | et_x_inicial = 0 78 | et_x_final = 7 79 | pasos_x = 1 80 | # Para y 81 | et_y_inicial = 0 82 | et_y_final = 50 83 | pasos_y = 5 84 | # Posición de las etiquetas (siempre se definen antes de add_numbers) 85 | # Para x 86 | self.x_axis.label_direction = DOWN #DOWN está por defecto así que se puede obviar 87 | # Para y 88 | self.y_axis.label_direction = LEFT 89 | # Adición de las etiquetas 90 | # Para x 91 | self.x_axis.add_numbers(*range( 92 | et_x_inicial, 93 | et_x_final+pasos_x, 94 | pasos_x 95 | )) 96 | # Para y 97 | self.y_axis.add_numbers(*range( 98 | et_y_inicial, 99 | et_y_final+pasos_y, 100 | pasos_y 101 | )) 102 | # Animación Write (se puede modificar a Show...) 103 | self.play( 104 | Write(self.x_axis), 105 | Write(self.y_axis) 106 | ) 107 | 108 | class Grafica3(GraphScene): 109 | CONFIG = { 110 | "y_max" : 50, 111 | "y_min" : 0, 112 | "x_max" : 7, 113 | "x_min" : 0, 114 | "y_tick_frequency" : 10, 115 | "axes_color" : BLUE, 116 | } 117 | def construct(self): 118 | self.setup_axes() 119 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 120 | 121 | self.play( 122 | ShowCreation(grafica), 123 | run_time = 2 124 | ) 125 | self.wait() 126 | 127 | def setup_axes(self): 128 | GraphScene.setup_axes(self) 129 | # Parámetros personalizados 130 | self.x_axis.add_numbers(*[0,2,5,4]) 131 | # Parámetros de y 132 | et_y_inicial = 0 133 | et_y_final = 50 134 | pasos_y = 5 135 | self.y_axis.label_direction = LEFT 136 | self.y_axis.add_numbers(*range( 137 | et_y_inicial, 138 | et_y_final+pasos_y, 139 | pasos_y 140 | )) 141 | self.play(Write(self.x_axis),Write(self.y_axis)) 142 | 143 | class Grafica4(GraphScene): 144 | CONFIG = { 145 | "y_max" : 50, 146 | "y_min" : 0, 147 | "x_max" : 7, 148 | "x_min" : 0, 149 | "y_tick_frequency" : 10, 150 | "axes_color" : BLUE, 151 | } 152 | def construct(self): 153 | self.setup_axes() 154 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 155 | 156 | self.play( 157 | ShowCreation(grafica), 158 | run_time = 2 159 | ) 160 | self.wait() 161 | 162 | def setup_axes(self): 163 | GraphScene.setup_axes(self) 164 | self.x_axis.label_direction = UP 165 | self.x_axis.add_numbers(*[3.5,5,4]) #El 3.5 lo redondea a 4 166 | self.y_axis.label_direction = LEFT 167 | self.y_axis.add_numbers(*range(0, 50+5, 5)) 168 | self.play(Write(self.x_axis),Write(self.y_axis)) 169 | 170 | class Grafica5(GraphScene): 171 | CONFIG = { 172 | "y_max" : 50, 173 | "y_min" : 0, 174 | "x_max" : 7, 175 | "x_min" : 0, 176 | "y_tick_frequency" : 10, 177 | "x_tick_frequency" : 0.5, 178 | "axes_color" : BLUE, 179 | } 180 | def construct(self): 181 | self.setup_axes() 182 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 183 | 184 | self.play( 185 | ShowCreation(grafica), 186 | run_time = 2 187 | ) 188 | self.wait() 189 | 190 | def setup_axes(self): 191 | GraphScene.setup_axes(self) 192 | self.x_axis.label_direction = UP 193 | valores_x = [ 194 | (3.5,"3.5"), # (posición 3.5, etiqueta "3.5") 195 | (4.5,"\\frac{9}{2}") # (posición 4.5, etiqueta 9/2) 196 | ] 197 | self.x_axis_labels = VGroup() # Crea un grupo de objetos 198 | # pos. tex. 199 | for x_val, x_tex in valores_x: 200 | tex = TexMobject(x_tex) # Convierte etiqueta a TexMobject 201 | tex.scale(0.7) # Lo hace más pequeño 202 | tex.next_to(self.coords_to_point(x_val, 0), DOWN) #Lo situa en la cordenada 203 | self.x_axis_labels.add(tex) #Lo agrega al grupo de objetos 204 | self.play( 205 | Write(self.x_axis_labels), #Anima el grupo de objetos 206 | Write(self.x_axis), 207 | Write(self.y_axis) 208 | ) 209 | 210 | class Grafica6(GraphScene): 211 | CONFIG = { 212 | "y_max" : 50, 213 | "y_min" : 0, 214 | "x_max" : 7, 215 | "x_min" : 0, 216 | "y_tick_frequency" : 10, 217 | "x_tick_frequency" : 0.5, 218 | "axes_color" : BLUE, 219 | } 220 | def construct(self): 221 | self.setup_axes() 222 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 223 | 224 | self.play( 225 | ShowCreation(grafica), 226 | run_time = 2 227 | ) 228 | self.wait() 229 | 230 | def setup_axes(self): 231 | GraphScene.setup_axes(self) 232 | self.x_axis.label_direction = UP 233 | # Lista de etiquetas 234 | lista_x = ["0","0.5","1","1.5","2"] 235 | # Lista con valores de posiciones 236 | valor_decimal_x=[0,0.5,1,1.5,2] 237 | # Parejas de (posición,etiqueta) 238 | valores_x = [ 239 | (i,j) 240 | for i,j in zip(valor_decimal_x,lista_x) 241 | ] 242 | self.x_axis_labels = VGroup() 243 | for x_val, x_tex in valores_x: 244 | tex = TexMobject(x_tex) 245 | tex.scale(0.7) 246 | tex.next_to(self.coords_to_point(x_val, 0), DOWN) 247 | self.x_axis_labels.add(tex) 248 | self.play( 249 | Write(self.x_axis_labels), #Anima el grupo de objetos 250 | Write(self.x_axis), 251 | Write(self.y_axis) 252 | ) 253 | 254 | class Grafica7(GraphScene): 255 | CONFIG = { 256 | "y_max" : 50, 257 | "y_min" : 0, 258 | "x_max" : 7, 259 | "x_min" : 0, 260 | "y_tick_frequency" : 10, 261 | "x_tick_frequency" : 0.5, 262 | "axes_color" : BLUE, 263 | } 264 | def construct(self): 265 | self.setup_axes() 266 | grafica = self.get_graph(lambda x : x**2, color = GREEN) 267 | 268 | self.play( 269 | ShowCreation(grafica), 270 | run_time = 2 271 | ) 272 | self.wait() 273 | 274 | def setup_axes(self): 275 | GraphScene.setup_axes(self) 276 | self.x_axis.label_direction = UP 277 | # Parametros de posiciones 278 | valor_en_x = 0 279 | pasos_x = 0.5 280 | valor_fin_x = 7 281 | # Valores de posiciones 282 | valor_decimal_x=list(np.arange(valor_en_x,valor_fin_x+pasos_x,pasos_x)) 283 | # Lista de etiquetas 284 | lista_x=[] 285 | for i in valor_decimal_x: 286 | lista_x.append("%.1f"%i) 287 | # Parejas de (posición,etiqueta) 288 | valores_x = [ 289 | (i,j) 290 | for i,j in zip(valor_decimal_x,lista_x) 291 | ] 292 | self.x_axis_labels = VGroup() 293 | for x_val, x_tex in valores_x: 294 | tex = TexMobject(x_tex) 295 | tex.scale(0.7) 296 | tex.next_to(self.coords_to_point(x_val, 0), DOWN) 297 | self.x_axis_labels.add(tex) 298 | self.play( 299 | Write(self.x_axis_labels), 300 | Write(self.x_axis), 301 | Write(self.y_axis) 302 | ) 303 | 304 | class GraficaSenoCoseno1(GraphScene): 305 | CONFIG = { 306 | "y_max" : 1.5, 307 | "y_min" : -1.5, 308 | "x_max" : 3*PI/2, 309 | "x_min" : -3*PI/2, 310 | "y_tick_frequency" : 0.5, 311 | "x_tick_frequency" : PI/2, 312 | "graph_origin" : ORIGIN, 313 | "y_axis_label": None, #No escribe etiqueta de y 314 | "x_axis_label": None, #No escribe etiqueta de x 315 | } 316 | def construct(self): 317 | self.setup_axes() 318 | graficaSeno = self.get_graph(lambda x : np.sin(x), 319 | color = GREEN, 320 | x_min=-4, 321 | x_max=4, 322 | ) 323 | graficaCoseno = self.get_graph(lambda x : np.cos(x), 324 | color = GRAY, 325 | x_min=-PI, 326 | x_max=0, 327 | ) 328 | graficaSeno.set_stroke(width=3) # Grosor de linea 329 | graficaCoseno.set_stroke(width=2) 330 | # Anima una por una 331 | for grafica in (graficaSeno,graficaCoseno): 332 | self.play( 333 | ShowCreation(grafica), 334 | run_time = 2 335 | ) 336 | self.wait() 337 | 338 | def setup_axes(self): 339 | GraphScene.setup_axes(self) 340 | #Grosor de ejes 341 | self.x_axis.set_stroke(width=2) 342 | self.y_axis.set_stroke(width=2) 343 | #Color de ejes 344 | self.x_axis.set_color(RED) 345 | self.y_axis.set_color(YELLOW) 346 | #Modificar posición de etiquetas x,y 347 | func = TexMobject("\\mbox{sen}\\theta") 348 | var = TexMobject("\\theta") 349 | func.set_color(BLUE) 350 | var.set_color(PURPLE) 351 | func.next_to(self.y_axis,UP) 352 | var.next_to(self.x_axis,RIGHT+UP) 353 | #Etiquetas del eje y 354 | self.y_axis.label_direction = LEFT*1.5 355 | self.y_axis.add_numbers(*[-1,1]) 356 | #Parámetros de valores de posiciones en x 357 | valor_en_x = -3*PI/2 358 | pasos_x = PI/2 359 | valor_fin_x = 3*PI/2 360 | #Lista de valores de posiciones de x 361 | valor_decimal_x=list(np.arange(valor_en_x,valor_fin_x+pasos_x,pasos_x)) 362 | #Lista de valores TexMobject de etiquetas en x 363 | lista_x=TexMobject("-\\frac{3\\pi}{2}", # -3pi/2 364 | "-\\pi", # -pi 365 | "-\\frac{\\pi}{2}", # -pi/2 366 | "\\,", # 0 (espacio) 367 | "\\frac{\\pi}{2}", # pi/2 368 | "\\pi",# pi 369 | "\\frac{3\\pi}{2}" # 3pi/2 370 | ) 371 | #Lista de (posición,etiqueta) 372 | valores_x = [(i,j) 373 | for i,j in zip(valor_decimal_x,lista_x) 374 | ] 375 | self.x_axis_labels = VGroup() 376 | for x_val, x_tex in valores_x: 377 | x_tex.scale(0.7) #No es necesario usar variable tex 378 | if x_val == -PI or x_val == PI: #si x es igual a -pi o pi 379 | x_tex.next_to(self.coords_to_point(x_val, 0), 2*DOWN) #coloca más abajo 380 | else: # Si eso no ocurre... 381 | x_tex.next_to(self.coords_to_point(x_val, 0), DOWN) 382 | self.x_axis_labels.add(x_tex) 383 | #Anima la aparición del conjunto 384 | self.play(*[Write(objeto) 385 | for objeto in [ 386 | self.y_axis, 387 | self.x_axis, 388 | self.x_axis_labels, 389 | func,var 390 | ] 391 | ], 392 | run_time=2 393 | ) 394 | 395 | class GraficaSenoCoseno2(GraphScene): 396 | CONFIG = { 397 | "y_max" : 1.5, 398 | "y_min" : -1.5, 399 | "x_max" : 3*PI/2, 400 | "x_min" : -3*PI/2, 401 | "y_tick_frequency" : 0.5, 402 | "x_tick_frequency" : PI/2, 403 | "graph_origin" : ORIGIN, 404 | "y_axis_label": None, #No escribe etiqueta de y 405 | "x_axis_label": None, #No escribe etiqueta de x 406 | } 407 | def construct(self): 408 | self.setup_axes() 409 | graficaSeno = self.get_graph(lambda x : np.sin(x), 410 | color = GREEN, 411 | x_min=-4, 412 | x_max=4, 413 | ) 414 | graficaCoseno = self.get_graph(lambda x : np.cos(x), 415 | color = GRAY, 416 | x_min=-PI, 417 | x_max=0, 418 | ) 419 | graficaSeno.set_stroke(width=3) # Grosor de linea 420 | graficaCoseno.set_stroke(width=2) 421 | # Anima las dos juntas 422 | self.play(*[ 423 | ShowCreation(grafica) 424 | for grafica in ( 425 | graficaSeno, 426 | graficaCoseno, 427 | ) 428 | ], 429 | run_time = 2) 430 | 431 | def setup_axes(self): 432 | GraphScene.setup_axes(self) 433 | #Grosor de ejes 434 | self.x_axis.set_stroke(width=2) 435 | self.y_axis.set_stroke(width=2) 436 | #Color de ejes 437 | self.x_axis.set_color(RED) 438 | self.y_axis.set_color(YELLOW) 439 | #Modificar posición de etiquetas x,y 440 | func = TexMobject("\\mbox{sen}\\theta") 441 | var = TexMobject("\\theta") 442 | func.set_color(BLUE) 443 | var.set_color(PURPLE) 444 | func.next_to(self.y_axis,UP) 445 | var.next_to(self.x_axis,RIGHT+UP) 446 | #Etiquetas del eje y 447 | self.y_axis.label_direction = LEFT*1.5 448 | self.y_axis.add_numbers(*[-1,1]) 449 | #Parámetros de valores de posiciones en x 450 | valor_en_x = -3*PI/2 451 | pasos_x = PI/2 452 | valor_fin_x = 3*PI/2 453 | #Lista de valores de posiciones de x 454 | valor_decimal_x=list(np.arange(valor_en_x,valor_fin_x+pasos_x,pasos_x)) 455 | #Lista de valores TexMobject de etiquetas en x 456 | lista_x=TexMobject("-\\frac{3\\pi}{2}", # -3pi/2 457 | "-\\pi", # -pi 458 | "-\\frac{\\pi}{2}", # -pi/2 459 | "\\,", # 0 (espacio) 460 | "\\frac{\\pi}{2}", # pi/2 461 | "\\pi",# pi 462 | "\\frac{3\\pi}{2}" # 3pi/2 463 | ) 464 | #Lista de (posición,etiqueta) 465 | valores_x = [(i,j) 466 | for i,j in zip(valor_decimal_x,lista_x) 467 | ] 468 | self.x_axis_labels = VGroup() 469 | for x_val, x_tex in valores_x: 470 | x_tex.scale(0.7) #No es necesario usar variable tex 471 | if x_val == -PI or x_val == PI: #si x es igual a -pi o pi 472 | x_tex.next_to(self.coords_to_point(x_val, 0), 2*DOWN) #coloca más abajo 473 | else: # Si eso no ocurre... 474 | x_tex.next_to(self.coords_to_point(x_val, 0), DOWN) 475 | self.x_axis_labels.add(x_tex) 476 | #Anima la aparición del conjunto 477 | self.play(*[Write(objeto) 478 | for objeto in [ 479 | self.y_axis, 480 | self.x_axis, 481 | self.x_axis_labels, 482 | func,var 483 | ] 484 | ], 485 | run_time=2 486 | ) -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica1.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica1v2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica1v2.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica2.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica3.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica4.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica5.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica6.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/Grafica7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/Grafica7.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/GraficaSenoCoseno1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/GraficaSenoCoseno1.gif -------------------------------------------------------------------------------- /Español/5_introducción_gráficas/gifs/GraficaSenoCoseno2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/5_introducción_gráficas/gifs/GraficaSenoCoseno2.gif -------------------------------------------------------------------------------- /Español/6_formulas_3D/6b_Introduccion_graficas_3D.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | #El simple cambio de Scene por ThreeDScene no parece tener ningun cambio 4 | class PosicionCamara1(ThreeDScene): 5 | def construct(self): 6 | circulo=Circle() 7 | self.play(ShowCreation(circulo)) 8 | self.wait() 9 | 10 | ''' 11 | Hay que agregar: 12 | 13 | def get_axis(self, min_val, max_val, axis_config): 14 | new_config = merge_config([ 15 | axis_config, 16 | {"x_min": min_val, "x_max": max_val}, 17 | self.number_line_config, 18 | ]) 19 | return NumberLine(**new_config) 20 | 21 | en manimlib/mobject/coordinate_systems.py 22 | 23 | Pero si se usa self.set_camera_orientation(phi,theta,distance,gamma) se nota la diferencia 24 | Ademas de que se pueden usar los ejes en tres de con ThreeDAxes() donde se puede configurar: 25 | ThreeDAxes( 26 | x_min. 27 | x_max, 28 | y_min, 29 | y_max, 30 | z_min, 31 | z_max 32 | ) 33 | ''' 34 | 35 | class PosicionCamara2(ThreeDScene): 36 | def construct(self): 37 | axes = ThreeDAxes() 38 | circulo=Circle() 39 | self.set_camera_orientation(phi=0 * DEGREES) 40 | self.play(ShowCreation(circulo),ShowCreation(axes)) 41 | self.wait() 42 | 43 | class PosicionCamara3(ThreeDScene): 44 | def construct(self): 45 | axes = ThreeDAxes() 46 | circulo=Circle() 47 | self.set_camera_orientation(phi=80 * DEGREES,theta=45*DEGREES) 48 | self.play(ShowCreation(circulo),ShowCreation(axes)) 49 | self.wait() 50 | 51 | class PosicionCamara4(ThreeDScene): 52 | def construct(self): 53 | axes = ThreeDAxes() 54 | circulo=Circle() 55 | self.set_camera_orientation(phi=80 * DEGREES,theta=45*DEGREES,distance=6) 56 | self.play(ShowCreation(circulo),ShowCreation(axes)) 57 | self.wait() 58 | 59 | class PosicionCamara5(ThreeDScene): 60 | def construct(self): 61 | axes = ThreeDAxes() 62 | circulo=Circle() 63 | self.set_camera_orientation(phi=80 * DEGREES,theta=45*DEGREES,distance=6,gamma=30*DEGREES) 64 | self.play(ShowCreation(circulo),ShowCreation(axes)) 65 | self.wait() 66 | 67 | #------ Movimiento de camara 68 | 69 | class MovimientoCamara1(ThreeDScene): 70 | def construct(self): 71 | axes = ThreeDAxes() 72 | circulo=Circle() 73 | self.play(ShowCreation(circulo),ShowCreation(axes)) 74 | self.move_camera(phi=30*DEGREES,theta=-45*DEGREES,run_time=3) 75 | self.wait() 76 | 77 | class MovimientoCamara2(ThreeDScene): 78 | def construct(self): 79 | axes = ThreeDAxes() 80 | circulo=Circle() 81 | self.set_camera_orientation(phi=80 * DEGREES) #Configuras la camara a 80 grados 82 | self.play(ShowCreation(circulo),ShowCreation(axes)) 83 | self.begin_ambient_camera_rotation(rate=0.1) #Empizas a girar la camara de manera automatica 84 | self.wait(5) 85 | self.stop_ambient_camera_rotation() #Detienes el giro autimatico 86 | self.move_camera(phi=80*DEGREES,theta=-PI/2) #Regresas a la posicion original 87 | self.wait() 88 | 89 | #----------- Funciones parametricas 90 | 91 | 92 | class CurvaParametrica1(ThreeDScene): 93 | def construct(self): 94 | curva1=ParametricFunction( 95 | lambda u : np.array([ 96 | 1.2*np.cos(u), 97 | 1.2*np.sin(u), 98 | u/2 99 | ]),color=RED,t_min=-TAU,t_max=TAU, 100 | ) 101 | curva2=ParametricFunction( 102 | lambda u : np.array([ 103 | 1.2*np.cos(u), 104 | 1.2*np.sin(u), 105 | u 106 | ]),color=RED,t_min=-TAU,t_max=TAU, 107 | ) 108 | axes = ThreeDAxes() 109 | 110 | self.add(axes) 111 | 112 | self.set_camera_orientation(phi=80 * DEGREES,theta=-60*DEGREES) 113 | self.begin_ambient_camera_rotation(rate=0.1) 114 | self.play(ShowCreation(curva1)) 115 | self.wait() 116 | self.play(Transform(curva1,curva2),rate_func=there_and_back,run_time=3) 117 | self.wait() 118 | 119 | # La escena anterior da la sensacion de que la curva siempre se muestra sobre los ejes 120 | # Para que la curva este por debajo se debe usar .set_shade_in_3d(True) 121 | 122 | class CurvaParametrica2(ThreeDScene): 123 | def construct(self): 124 | curva1=ParametricFunction( 125 | lambda u : np.array([ 126 | 1.2*np.cos(u), 127 | 1.2*np.sin(u), 128 | u/2 129 | ]),color=RED,t_min=-TAU,t_max=TAU, 130 | ) 131 | curva2=ParametricFunction( 132 | lambda u : np.array([ 133 | 1.2*np.cos(u), 134 | 1.2*np.sin(u), 135 | u 136 | ]),color=RED,t_min=-TAU,t_max=TAU, 137 | ) 138 | 139 | curva1.set_shade_in_3d(True) 140 | curva2.set_shade_in_3d(True) 141 | 142 | axes = ThreeDAxes() 143 | 144 | self.add(axes) 145 | 146 | self.set_camera_orientation(phi=80 * DEGREES,theta=-60*DEGREES) 147 | self.begin_ambient_camera_rotation(rate=0.1) 148 | self.play(ShowCreation(curva1)) 149 | self.wait() 150 | self.play(Transform(curva1,curva2),rate_func=there_and_back,run_time=3) 151 | self.wait() 152 | 153 | 154 | class CurvaParametrica2(ThreeDScene): 155 | def construct(self): 156 | curva1=ParametricFunction( 157 | lambda u : np.array([ 158 | 1.2*np.cos(u), 159 | 1.2*np.sin(u), 160 | u/2 161 | ]),color=RED,t_min=-TAU,t_max=TAU, 162 | ) 163 | curva2=ParametricFunction( 164 | lambda u : np.array([ 165 | 1.2*np.cos(u), 166 | 1.2*np.sin(u), 167 | u 168 | ]),color=RED,t_min=-TAU,t_max=TAU, 169 | ) 170 | 171 | curva1.set_shade_in_3d(True) 172 | curva2.set_shade_in_3d(True) 173 | 174 | axes = ThreeDAxes() 175 | 176 | self.add(axes) 177 | 178 | self.set_camera_orientation(phi=80 * DEGREES,theta=-60*DEGREES) 179 | self.begin_ambient_camera_rotation(rate=0.1) 180 | self.play(ShowCreation(curva1)) 181 | self.wait() 182 | self.play(Transform(curva1,curva2),rate_func=there_and_back,run_time=3) 183 | self.wait() 184 | 185 | #----- Superficies 186 | class Superficies(ThreeDScene): 187 | def construct(self): 188 | axes = ThreeDAxes() 189 | cilindro = ParametricSurface( 190 | lambda u, v: np.array([ 191 | np.cos(TAU * v), 192 | np.sin(TAU * v), 193 | 2 * (1 - u) 194 | ]), 195 | resolution=(6, 32)).fade(0.5) #Numero de cuadros de la superficie 196 | 197 | paraboloide = ParametricSurface( 198 | lambda u, v: np.array([ 199 | np.cos(v)*u, 200 | np.sin(v)*u, 201 | u**2 202 | ]),v_max=TAU, 203 | checkerboard_colors=[PURPLE_D, PURPLE_E], 204 | resolution=(10, 32)).scale(2) 205 | 206 | hiper_para = ParametricSurface( 207 | lambda u, v: np.array([ 208 | u, 209 | v, 210 | u**2-v**2 211 | ]),v_min=-2,v_max=2,u_min=-2,u_max=2,checkerboard_colors=[BLUE_D, BLUE_E], 212 | resolution=(15, 32)).scale(1) 213 | 214 | cono = ParametricSurface( 215 | lambda u, v: np.array([ 216 | u*np.cos(v), 217 | u*np.sin(v), 218 | u 219 | ]),v_min=0,v_max=TAU,u_min=-2,u_max=2,checkerboard_colors=[GREEN_D, GREEN_E], 220 | resolution=(15, 32)).scale(1) 221 | 222 | hip_una_hoja = ParametricSurface( 223 | lambda u, v: np.array([ 224 | np.cosh(u)*np.cos(v), 225 | np.cosh(u)*np.sin(v), 226 | np.sinh(u) 227 | ]),v_min=0,v_max=TAU,u_min=-2,u_max=2,checkerboard_colors=[YELLOW_D, YELLOW_E], 228 | resolution=(15, 32)) 229 | 230 | elipsoide=ParametricSurface( 231 | lambda u, v: np.array([ 232 | 1*np.cos(u)*np.cos(v), 233 | 2*np.cos(u)*np.sin(v), 234 | 0.5*np.sin(u) 235 | ]),v_min=0,v_max=TAU,u_min=-PI/2,u_max=PI/2,checkerboard_colors=[TEAL_D, TEAL_E], 236 | resolution=(15, 32)).scale(2) 237 | 238 | esfera = ParametricSurface( 239 | lambda u, v: np.array([ 240 | 1.5*np.cos(u)*np.cos(v), 241 | 1.5*np.cos(u)*np.sin(v), 242 | 1.5*np.sin(u) 243 | ]),v_min=0,v_max=TAU,u_min=-PI/2,u_max=PI/2,checkerboard_colors=[RED_D, RED_E], 244 | resolution=(15, 32)).scale(2) 245 | 246 | 247 | self.set_camera_orientation(phi=75 * DEGREES) 248 | self.begin_ambient_camera_rotation(rate=0.2) 249 | 250 | 251 | self.add(axes) 252 | self.play(Write(esfera)) 253 | self.wait() 254 | self.play(ReplacementTransform(esfera,elipsoide)) 255 | self.wait() 256 | self.play(ReplacementTransform(elipsoide,cono)) 257 | self.wait() 258 | self.play(ReplacementTransform(cono,hip_una_hoja)) 259 | self.wait() 260 | self.play(ReplacementTransform(hip_una_hoja,hiper_para)) 261 | self.wait() 262 | self.play(ReplacementTransform(hiper_para,paraboloide)) 263 | self.wait() 264 | self.play(ReplacementTransform(paraboloide,cilindro)) 265 | self.wait() 266 | self.play(FadeOut(cilindro)) 267 | 268 | #---- Texto en 3D 269 | class Texto3D1(ThreeDScene): 270 | def construct(self): 271 | axes = ThreeDAxes() 272 | self.set_camera_orientation(phi=75 * DEGREES,theta=-45*DEGREES) 273 | texto3d=TextMobject("Este es texto en 3D").scale(2) 274 | self.add(axes,texto3d) 275 | 276 | # El texto por defecto siempre se escribe en el plano XY, se puede 277 | # rotar si se quiere 278 | 279 | class Texto3D2(ThreeDScene): 280 | def construct(self): 281 | axes = ThreeDAxes() 282 | self.set_camera_orientation(phi=75 * DEGREES,theta=-45*DEGREES) 283 | texto3d=TextMobject("Este es texto en 3D").scale(2).set_shade_in_3d(True) #quitar si se quiere .set_shade_in_3d(True) 284 | texto3d.rotate(PI/2,axis=RIGHT) 285 | self.add(axes,texto3d) 286 | 287 | # Si queremos que el texto se muestre de forma tradicional con el fondo 3D entonces se usa: 288 | class Texto3D3(ThreeDScene): 289 | def construct(self): 290 | axes = ThreeDAxes() 291 | self.set_camera_orientation(phi=75 * DEGREES,theta=-45*DEGREES) 292 | texto3d=TextMobject("Este es texto en 3D") 293 | 294 | self.add_fixed_in_frame_mobjects(texto3d) #Este es el metodo que hay que emplear 295 | texto3d.to_corner(UL) 296 | 297 | self.add(axes) 298 | self.begin_ambient_camera_rotation() 299 | self.play(Write(texto3d)) 300 | 301 | esfera = ParametricSurface( 302 | lambda u, v: np.array([ 303 | 1.5*np.cos(u)*np.cos(v), 304 | 1.5*np.cos(u)*np.sin(v), 305 | 1.5*np.sin(u) 306 | ]),v_min=0,v_max=TAU,u_min=-PI/2,u_max=PI/2,checkerboard_colors=[RED_D, RED_E], 307 | resolution=(15, 32)).scale(2) 308 | 309 | self.play(LaggedStart(ShowCreation,esfera)) 310 | self.wait(2) 311 | 312 | # Jugar con shift, move_to, next_to, Line, Arrow, CurvedArrow, etc. Pero ahora en 3D 313 | 314 | 315 | -------------------------------------------------------------------------------- /Español/6_formulas_3D/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # 2 | ## Programas 3 | 4 | ### 5 | ```python3 6 | 7 | 8 | ```` 9 |

10 | 11 | 12 | ### 13 | ```python3 14 | 15 | 16 | ```` 17 | 18 |

19 | 20 | -------------------------------------------------------------------------------- /Español/6_formulas_3D/gifs/Texto2Dv1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/6_formulas_3D/gifs/Texto2Dv1.gif -------------------------------------------------------------------------------- /Español/6_formulas_3D/gifs/Texto2Dv2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/6_formulas_3D/gifs/Texto2Dv2.gif -------------------------------------------------------------------------------- /Español/7_agregar_audio/7_agregar_audio.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class SoundTest(Scene): 4 | CONFIG = {"include_sound": True} 5 | def construct(self): 6 | title=TextMobject("Sound Test").to_edge(UP) 7 | self.wait() 8 | self.add_sound("a3",gain=-10) 9 | self.play(Write(title)) 10 | -------------------------------------------------------------------------------- /Español/7_agregar_audio/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # 2 | ## Programas 3 | 4 | ### 5 | ```python3 6 | 7 | 8 | ```` 9 |

10 | 11 | 12 | ### 13 | ```python3 14 | 15 | 16 | ```` 17 | 18 |

19 | 20 | -------------------------------------------------------------------------------- /Español/7_agregar_audio/gifs/Texto2Dv1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/7_agregar_audio/gifs/Texto2Dv1.gif -------------------------------------------------------------------------------- /Español/7_agregar_audio/gifs/Texto2Dv2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/7_agregar_audio/gifs/Texto2Dv2.gif -------------------------------------------------------------------------------- /Español/8_imagenes_svg/8_imagenes_svg.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class CheckSVG(Scene): 4 | CONFIG={ 5 | "camera_config":{"background_color": WHITE}, 6 | "svg_type":"svg", 7 | "file":"", 8 | "svg_scale":0.9, 9 | "angle":0, 10 | "flip_svg":False, 11 | "fill_opacity": 1, 12 | "remove": [], 13 | "stroke_color": BLACK, 14 | "fill_color": BLACK, 15 | "stroke_width": 3, 16 | "numbers_scale":0.5, 17 | "show_numbers": False, 18 | "animation": False, 19 | "direction_numbers": UP, 20 | "color_numbers": RED, 21 | "space_between_numbers":0, 22 | "show_elements":[], 23 | "color_element":BLUE, 24 | "set_size":"width", 25 | "remove_stroke":[], 26 | "show_stroke":[], 27 | "stroke_":1 28 | } 29 | def construct(self): 30 | if self.set_size=="width": 31 | width_size=FRAME_WIDTH 32 | height_size=None 33 | else: 34 | width_size=None 35 | height_size=FRAME_HEIGHT 36 | 37 | if self.svg_type=="svg": 38 | self.imagen=SVGMobject( 39 | "%s"%self.file, 40 | #fill_opacity = 1, 41 | stroke_width = self.stroke_width, 42 | stroke_color = self.stroke_color, 43 | width=width_size, 44 | height=height_size 45 | ).rotate(self.angle).set_fill(self.fill_color,self.fill_opacity).scale(self.svg_scale) 46 | else: 47 | self.imagen=self.import_text().set_fill(self.fill_color,self.fill_opacity).rotate(self.angle).set_stroke(self.stroke_color,self.stroke_width) 48 | if self.set_size=="width": 49 | self.imagen.set_width(FRAME_WIDTH) 50 | else: 51 | self.imagen.set_height(FRAME_HEIGHT) 52 | self.imagen.scale(self.svg_scale) 53 | self.personalize_image() 54 | if self.flip_svg==True: 55 | self.imagen.flip() 56 | if self.show_numbers==True: 57 | self.print_formula(self.imagen, 58 | self.numbers_scale, 59 | self.direction_numbers, 60 | self.remove, 61 | self.space_between_numbers, 62 | self.color_numbers) 63 | 64 | self.return_elements(self.imagen,self.show_elements) 65 | for st in self.remove_stroke: 66 | self.imagen[st].set_stroke(None,0) 67 | for st in self.show_stroke: 68 | self.imagen[st].set_stroke(None,self.stroke_) 69 | if self.animation==True: 70 | self.play(DrawBorderThenFill(self.imagen)) 71 | else: 72 | self.add(self.imagen) 73 | self.wait() 74 | def import_text(self): 75 | return TexMobject("") 76 | 77 | def personalize_image(self): 78 | pass 79 | 80 | def print_formula(self,text,inverse_scale,direction,exception,buff,color): 81 | text.set_color(RED) 82 | self.add(text) 83 | c = 0 84 | for j in range(len(text)): 85 | permission_print=True 86 | for w in exception: 87 | if j==w: 88 | permission_print=False 89 | if permission_print: 90 | self.add(text[j].set_color(self.stroke_color)) 91 | c = c + 1 92 | 93 | c=0 94 | for j in range(len(text)): 95 | permission_print=True 96 | element = TexMobject("%d" %c,color=color) 97 | element.scale(inverse_scale) 98 | element.next_to(text[j],direction,buff=buff) 99 | for w in exception: 100 | if j==w: 101 | permission_print=False 102 | if permission_print: 103 | self.add(element) 104 | c = c + 1 105 | 106 | def return_elements(self,formula,adds): 107 | for i in adds: 108 | self.add_foreground_mobjects(formula[i].set_color(self.color_element), 109 | TexMobject("%d"%i,color=self.color_element,background_stroke_width=0).scale(self.numbers_scale).next_to(formula[i],self.direction_numbers,buff=self.space_between_numbers)) -------------------------------------------------------------------------------- /Español/8_imagenes_svg/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # 2 | ## Programas 3 | 4 | ### 5 | ```python3 6 | 7 | 8 | ```` 9 |

10 | 11 | 12 | ### 13 | ```python3 14 | 15 | 16 | ```` 17 | 18 |

19 | 20 | -------------------------------------------------------------------------------- /Español/8_imagenes_svg/gifs/Texto2Dv1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/8_imagenes_svg/gifs/Texto2Dv1.gif -------------------------------------------------------------------------------- /Español/8_imagenes_svg/gifs/Texto2Dv2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/8_imagenes_svg/gifs/Texto2Dv2.gif -------------------------------------------------------------------------------- /Español/9_proyecto/9_proyecto.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | from tutorial.formulas_txt.formulas import formulas 3 | #Inicia parametros ----------------------------------------- 4 | 5 | class DespejeEcuacion2doGrado(Scene): 6 | def construct(self): 7 | self.importar_formulas() 8 | self.imprime_formula() 9 | self.configurar_cambios() 10 | self.conversion_formulas(n_paso=1, 11 | cambios=self.conjunto_cambios[0], 12 | fade=[10], 13 | arco=-PI/2 14 | ) 15 | self.conversion_formulas(n_paso=2, 16 | cambios=self.conjunto_cambios[1], 17 | write=[6,14], 18 | pre_copias=[0], 19 | pos_copias=[15] 20 | ) 21 | self.conversion_formulas(n_paso=3, 22 | cambios=self.conjunto_cambios[2], 23 | pos_write=[10, 11, 13, 14, 15, 16, 18, 20, 28, 29, 31, 32, 33, 34, 36, 38], 24 | ) 25 | self.conversion_formulas(n_paso=4, 26 | cambios=self.conjunto_cambios[3], 27 | ) 28 | self.conversion_formulas(n_paso=5, 29 | cambios=self.conjunto_cambios[4], 30 | fade=[20,27], 31 | pre_copias=[29], 32 | pos_copias=[28] 33 | ) 34 | self.conversion_formulas(n_paso=6, 35 | cambios=self.conjunto_cambios[5], 36 | fade=[19], 37 | ) 38 | self.conversion_formulas(n_paso=7, 39 | cambios=self.conjunto_cambios[6], 40 | pos_write=[25,28], 41 | ) 42 | self.conversion_formulas(n_paso=8, 43 | cambios=self.conjunto_cambios[7], 44 | pos_write=[32,26], 45 | ) 46 | self.conversion_formulas(n_paso=9, 47 | cambios=self.conjunto_cambios[8], 48 | ) 49 | self.conversion_formulas(n_paso=10, 50 | cambios=self.conjunto_cambios[9], 51 | pos_write=[0, 1, 16, 18, 20], 52 | ) 53 | self.conversion_formulas(n_paso=11, 54 | cambios=self.conjunto_cambios[10], 55 | fade=[0, 1, 2, 12, 14] 56 | ) 57 | self.conversion_formulas(n_paso=12, 58 | cambios=self.conjunto_cambios[11], 59 | ) 60 | self.conversion_formulas(n_paso=13, 61 | cambios=self.conjunto_cambios[12], 62 | fade=[25] 63 | ) 64 | self.conversion_formulas(n_paso=14, 65 | cambios=self.conjunto_cambios[13], 66 | ) 67 | # 68 | c1=SurroundingRectangle(self.formulas[14],buff=0.2) 69 | c2=SurroundingRectangle(self.formulas[14],buff=0.2) 70 | c2.rotate(PI) 71 | self.play(ShowCreationThenDestruction(c1),ShowCreationThenDestruction(c2)) 72 | self.wait(2) 73 | 74 | def importar_formulas(self): 75 | self.formulas=formulas 76 | 77 | 78 | def imprime_formula(self): 79 | self.play(Write(self.formulas[0])) 80 | 81 | def configurar_cambios(self): 82 | self.conjunto_cambios=[ 83 | #1 84 | [[ 85 | ( 0, 1, 3, 4, 5, 6, 7, 8, 9 ), 86 | ( 0, 1, 3, 4, 5, 6, 8, 9, 7 ) 87 | ]], 88 | #2 89 | [[ 90 | ( 0, 1, 3, 4, 5, 6, 7, 8, 9 ), 91 | ( 7, 0, 2, 3, 5, 9, 10, 11, 13 ) 92 | ]], 93 | #3 94 | [[ 95 | ( 0, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15 ), 96 | ( 0, 2, 3, 5, 6, 7, 9, 21, 22, 24, 25, 26 ) 97 | ]], 98 | #4 99 | [[ 100 | ( 0, 2, 10, 11, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 28, 29, 31, 32, 33, 34, 36, 38 ,5,6,7,9,3), 101 | ( 1, 11, 2, 0, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 19, 20, 22, 23, 24, 25, 27, 29 ,4,5,7,1,2) 102 | ]], 103 | #5 104 | [[ 105 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 19, 22, 23, 24, 25, 29), 106 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 19, 21, 24, 25, 26, 23) 107 | ]], 108 | #6 109 | [[ 110 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 13, 15, 16, 17, 21, 23, 24, 25, 26, 28 ), 111 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 23, 25, 26, 27, 14, 16, 17, 18, 19, 21 ) 112 | ]], 113 | #7 114 | [[ 115 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 23, 25, 26, 27 ), 116 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 23, 26, 27, 29 ) 117 | ]], 118 | #8 119 | [[ 120 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 23, 25, 26, 27, 28, 29, ), 121 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 23, 25, 27, 28, 29, 30, ) 122 | ]], 123 | #9 124 | [[ 125 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 21, 23, 25, 26, 27, 28, 29, 30, 32, ), 126 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 21, 22, 23, 25, 17, 18, 19, 20, 21, 22, 23, 25, ) 127 | ]], 128 | #10 129 | [[ 130 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 16, 17, 18, 19, 20, 21, 22, 23, 25, ), 131 | ( 2, 3, 5, 6, 7, 8, 10, 12, 14, 15, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, ) 132 | ]], 133 | #11 134 | [[ 135 | ( 3, 5, 6, 7, 8, 10, 15, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, ), 136 | ( 0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, ) 137 | ]], 138 | #12 139 | [[ 140 | ( 0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, ), 141 | ( 0, 2, 4, 5, 6, 7, 1, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, 25, ) 142 | ]], 143 | #13 144 | [[ 145 | ( 0, 1, 2, 4, 5, 6, 7, 9, 10, 12, 14, 15, 16, 17, 18, 19, 20, 21, 24, ), 146 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, ) 147 | ]], 148 | #14 149 | [[ 150 | ( 0, 1, 2, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, ), 151 | ( 0, 1, 3, 4, 16, 17, 18, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, ) 152 | ]] 153 | ] 154 | 155 | def conversion_formulas(self, 156 | pre_write=[], 157 | pos_write=[], 158 | pre_fade=[], 159 | pos_fade=[], 160 | fade=[], 161 | write=[], 162 | cambios=[[]], 163 | arco=0, 164 | n_paso=0, 165 | pre_copias=[], 166 | pos_copias=[], 167 | tiempo_pre_cambios=0.3, 168 | tiempo_cambios_final=0.3, 169 | run_time=2, 170 | tiempo_final=0.3, 171 | pre_orden=["w","f"], 172 | pos_orden=["w","f"] 173 | ): 174 | formula_copia=[] 175 | for c in pre_copias: 176 | formula_copia.append(self.formulas[n_paso-1][c].copy()) 177 | 178 | for ani_ in pre_orden: 179 | if len(pre_write)>0 and ani_=="w": 180 | self.play(*[Write(self.formulas[n_paso-1][w])for w in pre_write]) 181 | if len(pre_fade)>0 and ani_=="f": 182 | self.play(*[FadeOut(self.formulas[n_paso-1][w])for w in pre_fade]) 183 | 184 | self.wait(tiempo_pre_cambios) 185 | 186 | for pre_ind,post_ind in cambios: 187 | self.play(*[ 188 | ReplacementTransform( 189 | self.formulas[n_paso-1][i],self.formulas[n_paso][j], 190 | path_arc=arco 191 | ) 192 | for i,j in zip(pre_ind,post_ind) 193 | ], 194 | *[FadeOut(self.formulas[n_paso-1][f])for f in fade if len(fade)>0], 195 | *[Write(self.formulas[n_paso][w])for w in write if len(write)>0], 196 | *[ReplacementTransform(formula_copia[j],self.formulas[n_paso][f]) 197 | for j,f in zip(range(len(pos_copias)),pos_copias) if len(pre_copias)>0 198 | ], 199 | run_time=run_time 200 | ) 201 | 202 | self.wait(tiempo_cambios_final) 203 | 204 | for ani_ in pos_orden: 205 | if len(pos_write)>0 and ani_=="w": 206 | self.play(*[Write(self.formulas[n_paso][w])for w in pos_write]) 207 | if len(pos_fade)>0 and ani_=="f": 208 | self.play(*[FadeOut(self.formulas[n_paso][w])for w in pos_fade]) 209 | 210 | self.wait(tiempo_final) 211 | -------------------------------------------------------------------------------- /Español/9_proyecto/ESCENAS.md: -------------------------------------------------------------------------------- 1 | # 2 | ## Programas 3 | 4 | ### 5 | ```python3 6 | 7 | 8 | ```` 9 |

10 | 11 | 12 | ### 13 | ```python3 14 | 15 | 16 | ```` 17 | 18 |

19 | 20 | -------------------------------------------------------------------------------- /Español/9_proyecto/gifs/Texto2Dv1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/9_proyecto/gifs/Texto2Dv1.gif -------------------------------------------------------------------------------- /Español/9_proyecto/gifs/Texto2Dv2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/9_proyecto/gifs/Texto2Dv2.gif -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/PASOS.md: -------------------------------------------------------------------------------- 1 | # Cómo aprender Manim por cuenta propia. 2 | Este tutorial funciona con la versión de [manim del 3 de Febrero del 2019](https://github.com/3b1b/manim/tree/3b088b12843b7a4459fe71eba96b70edafb7aa78). 3 | 4 | ## 1. Descarga las siguientes imágenes 5 | ### 1.1 Descarga esta imagen como generic.png en ```media/designs/raster_images``` 6 | 7 |

8 | 9 | ### 1.2 Descarga esta imagen como generic.svg en ```media/designs/svg_images``` 10 | 11 |

12 | 13 | ### 1.3 Después mueve los tres archivos .svg de ```manimlib/files``` a ```media/designs/svg_images``` 14 | 15 | ### 1.4 Descarga [este](https://drive.google.com/open?id=1V_LpJoidm2tAVVBusKaHlky2-MLehTuM) archivo de sonido y ponlo en ```media/designs/sounds``` 16 | 17 | 18 | ## 2. Modificar los siguientes archivos: 19 | 20 | ### 2.1 En ```manimlib/mobject/coordinate_systems.py``` agrega en la linea 54: 21 | 22 | ```python3 23 | def get_axis(self, min_val, max_val, axis_config): 24 | new_config = merge_config([ 25 | axis_config, 26 | {"x_min": min_val, "x_max": max_val}, 27 | self.number_line_config, 28 | ]) 29 | return NumberLine(**new_config) 30 | ``` 31 |

32 | 33 | 34 | ### 2.2 Añade la siguiente linea en ```manimlib/mobject/svg/svg_mobject.py``` 35 | 36 | ```python3 37 | os.path.join(SVG_IMAGE_DIR, "generic.svg") 38 | ``` 39 | 40 |

41 | 42 | ### 2.3 Abre ```manimlib/mobject/types/image_mobject.py``` y remplaza la parte seleccionada de la imagen izquierda por el código que está en la parte derecha. 43 | 44 | 45 |

46 | 47 | Código: 48 | ```python3 49 | path=self.select_image(filename_or_array) 50 | #path = get_full_raster_image_path(filename_or_array) 51 | image = Image.open(path).convert(self.image_mode) 52 | self.pixel_array = np.array(image) 53 | else: 54 | self.pixel_array = np.array(filename_or_array) 55 | self.change_to_rgba_array() 56 | if self.invert: 57 | self.pixel_array[:, :, :3] = 255 - self.pixel_array[:, :, :3] 58 | AbstractImageMobject.__init__(self, **kwargs) 59 | 60 | def select_image(self,file_name): 61 | extensions=[".jpg", ".png", ".gif"] 62 | possible_paths = [file_name] 63 | possible_paths += [ 64 | os.path.join(RASTER_IMAGE_DIR, file_name + extension) 65 | for extension in ["", *extensions] 66 | ] 67 | possible_paths+=[os.path.join(RASTER_IMAGE_DIR, "generic.png")] 68 | for path in possible_paths: 69 | if os.path.exists(path): 70 | return path 71 | ``` 72 | 73 | ### 2.4 Abre ```manimlib/for_3b1b_videos/pi_creature.py``` y remplaza la parte seleccionada de la imagen izquierda por el código que está en la parte derecha. 74 | 75 |

76 | 77 | Código: 78 | ```python3 79 | "PiCreatures_plain.svg" 80 | ``` 81 | 82 | ### 2.5 Abre ```manimlib/mobject/svg/drawings.py``` y remplaza las partes seleccionadas de la imagen izquierda por el código que está en la parte derecha. 83 | 84 |

85 | 86 | Códigos: 87 | ```python3 88 | "file_name": "Bubbles_speech.svg", 89 | ``` 90 | ------------------------------------ 91 | ```python3 92 | SVGMobject.__init__(self,file_name="Bubbles_speech" ,**kwargs) 93 | ``` 94 | 95 | ### 2.6 Abre ```manimlib/once_useful_constructs/light.py``` y en la linea 21 añade: 96 | 97 | ```python3 98 | from manimlib.utils.space_ops import get_norm 99 | ``` 100 | 101 |

102 | 103 | ### 2.7 Abre ```manimlib/scene/three_d_scene.py``` y cambia la linea 149 por: 104 | 105 | ```python3 106 | if self.camera_config["pixel_width"] == PRODUCTION_QUALITY_CAMERA_CONFIG["pixel_width"]: 107 | ``` 108 | 109 |

110 | 111 | ### 2.7 Abre ```manimlib/utils/sounds.py``` y realiza las modificaciones que se muestran: 112 | 113 |

114 | 115 | 116 | ```python3 117 | # Agrega este codigo debajo de la linea 41 118 | def select_sound(sound_file_name): 119 | try_sound=os.path.join(SOUND_DIR, sound_file_name) 120 | if os.path.exists(try_sound): 121 | return sound_file_name 122 | else: 123 | return "generic_sound" 124 | ``` 125 | 126 | ```python3 127 | # Ubica el cursor al final de la linea 36, crea una nueva linea y pega lo siguiente: 128 | select_sound(sound_file_name), 129 | ``` 130 | -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/aprender_manim_cuenta_propia_v1.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | class ContadorFormulas(Scene): 3 | def construct(self): 4 | formula = TexMobject("\\frac{1}{t_2 - t_1}", "\\int_{t_1}^{t_2}", 5 | "g(t)", "e", "^{-2\\pi i","f", "t}", "dt").scale(2) 6 | self.add(formula) 7 | contador = 0 8 | for j in range(len(formula)): 9 | elemento = TexMobject("%d" %contador) 10 | texto = formula[j] 11 | texto.set_color(RED) 12 | self.add(texto) 13 | elemento.set_fill(opacity=1) 14 | elemento.to_edge(UP) 15 | self.add(elemento) 16 | self.wait(1.5) 17 | elemento.set_fill(opacity=0) 18 | texto.set_color(WHITE) 19 | contador = contador + 1 -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/archivos/generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/archivos/generic.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/archivos/generic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 43 | 45 | 46 | 48 | image/svg+xml 49 | 51 | 52 | 53 | 54 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt2.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt3.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt4.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt5.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt6.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/capt7.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/coord_syst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/coord_syst.png -------------------------------------------------------------------------------- /Español/extras/aprender_manim_cuenta_propia_v1/capturas/sound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/aprender_manim_cuenta_propia_v1/capturas/sound.png -------------------------------------------------------------------------------- /Español/extras/formulas_tex/ESCENA.md: -------------------------------------------------------------------------------- 1 | # Contador de fórmulas en varios frames 2 | Corrobora que la fórmula sea correcta, en este caso es: 3 | ```latex 4 | \lim_{x\to\infty}{1\over x}=0 5 | ``` 6 | 7 | Exportala en la terminal usando 8 | ```sh 9 | python3 extract_scene.py -g contador_formulas.py Formula 10 | ``` 11 | 12 | ```python3 13 | from big_ol_pile_of_manim_imports import * 14 | 15 | #exporta -g o -s 16 | def imprimir_formula_paso_1(self,texto,escala,escala_inversa,direccion,excepcion,separacion): 17 | excepcion=0 18 | self.add(texto.scale(escala)) 19 | contador = 0 20 | for j in range(len(texto)): 21 | elemento = TexMobject("%d" %contador) 22 | texto[j].set_color(RED) 23 | self.add(texto[j]) 24 | elemento.set_fill(opacity=1) 25 | elemento.to_edge(UP) 26 | self.add(elemento) 27 | self.wait(0.02) 28 | elemento.set_fill(opacity=0) 29 | texto[j].set_color(WHITE) 30 | contador = contador + 1 31 | 32 | #exporta -s 33 | def imprimir_formula_paso_2(self,texto,escala,escala_inversa,direccion,excepcion,separacion): 34 | texto.scale(escala).set_color(RED) 35 | self.add(texto) 36 | contador = 0 37 | for j in range(len(texto)): 38 | permiso_imprimir=True 39 | for w in excepcion: 40 | if j==w: 41 | permiso_imprimir=False 42 | if permiso_imprimir: 43 | self.add(texto[j].set_color("#808080")) 44 | contador = contador + 1 45 | 46 | contador=0 47 | for j in range(len(texto)): 48 | permiso_imprimir=True 49 | elemento = TexMobject("%d" %contador,color=WHITE) 50 | elemento.scale(escala_inversa) 51 | elemento.next_to(texto[j],direccion,buff=separacion) 52 | for w in excepcion: 53 | if j==w: 54 | permiso_imprimir=False 55 | if permiso_imprimir: 56 | self.add(elemento) 57 | contador = contador + 1 58 | 59 | class Formula(Scene): 60 | def construct(self): 61 | formula=TexMobject("\\lim","_","{","x","\\to","\\infty","}","{","1","\\over","x","}","=","0") 62 | excepcion=[] 63 | escala=2.5 64 | escala_inversa=0.5 65 | direccion=DOWN 66 | separacion=0 67 | imprimir_formula_paso_1(self,formula,escala,escala_inversa,direccion,excepcion,separacion) 68 | ``` 69 | 70 | esto te creará una carpeta con todos los frames de la animación, cada frame corresponderá a un elemento de la fórmula: 71 | 72 | 73 |

74 | 75 | 76 | # Contador en un sólo frame 77 | ## Paso 1: 78 | Corrobora que la fórmula sea correcta usando 79 | ```sh 80 | python extract_scene.py -s contador_formulas.py Formula 81 | ``` 82 | 83 |

84 | 85 | ## Paso 2 86 | En la clase "Formula" modifica (NO EN "def imprimir_formula_paso_1" ) 87 | ``` 88 | imprimir_formula_paso_1 89 | ``` 90 | por 91 | ``` 92 | imprimir_formula_paso_2 93 | ``` 94 | y vuelve a compilarlo. 95 | 96 |

97 | 98 | ## Paso 3 99 | Agrega al arreglo "excepcion" los elementos que están vacios y vuelve a compilar: 100 | ```python3 101 | excepcion=[1,2,6,7,11] 102 | ``` 103 | 104 |

105 | 106 | ## Posibles errores 107 | En caso de que sin querer agregues un elemento de más éste aparecerá en rojo indicando que lo incluiste en el arreglo de "excepcion", en este ejemplo eliminaremos la linea de quebrados (elemento 9): 108 | ```python3 109 | excepcion=[1,2,6,7,11,9] 110 | ``` 111 | 112 |

113 | -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/ContadorFormulas.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/ContadorFormulas.gif -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/Paso0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/Paso0.png -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/Paso1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/Paso1.png -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/Paso2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/Paso2.png -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/Paso_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/Paso_error.png -------------------------------------------------------------------------------- /Español/extras/formulas_tex/gifs/frames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/formulas_tex/gifs/frames.png -------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/PASOS.md: -------------------------------------------------------------------------------- 1 | # Cómo programar barras de progreso por defecto. 2 | ## 1. Abre ```manimlib/config.py``` y realizar los siguientes cambios: 3 | 4 | ### 1.1 Realiza los cambios en la linea 101, 102 y 103 como se muestra en la imagen. 5 | 6 | En la linea 101 cambia ```"--leave_progress_bars"``` por ```"--remove_progress_bars"```. 7 | 8 | En la linea 102 cambia ```"store_true"``` por ```"store_false"```. 9 | 10 | Opcional: En la linea 103 cambia ```"Leave progress bars displayed in terminal"``` por ```"Remove progress bars displayed in terminal"```. 11 | 12 | ```python3 13 | parser.add_argument( 14 | "--remove_progress_bars", 15 | action="store_false", 16 | help="Remove progress bars displayed in terminal", 17 | ) 18 | ``` 19 |

20 | 21 | ### 1.2 Realiza el cambio que se ve en la linea 183. 22 | 23 | Cambia ```python3 "leave_progress_bars": args.leave_progress_bars``` por ```python3 "remove_progress_bars": args.remove_progress_bars```. 24 | 25 | ```python3 26 | "remove_progress_bars": args.remove_progress_bars 27 | ``` 28 |

29 | 30 | ## 2. Abre ```manimlib/extract_scene.py``` y realiza el siguiente cambio en la linea 146. 31 | 32 | Cambia ```python3 "leave_progress_bars",``` por ```python3 "remove_progress_bars",```. 33 | 34 | ```python3 35 | "remove_progress_bars", 36 | ``` 37 |

38 | 39 | ## 3. Abre ```manimlib/scene/scene.py``` y realiza los siguientes cambios. 40 | 41 | ### 3.1 En la linea 31 cambia ```python3 "leave_progress_bars": False``` por ```python3 "remove_progress_bars": False```. 42 | 43 | ```python3 44 | "remove_progress_bars": False, 45 | ``` 46 |

47 | 48 | 49 | ### 3.2 En la linea 31 cambia ```python3 leave=self.leave_progress_bars,``` por ```python3 leave=self.remove_progress_bars,```. 50 | 51 | ```python3 52 | leave=self.remove_progress_bars, 53 | ``` 54 |

-------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/capturas/capt1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/programar_barras_progreso_por_defecto/capturas/capt1.png -------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/capturas/capt2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/programar_barras_progreso_por_defecto/capturas/capt2.png -------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/capturas/capt3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/programar_barras_progreso_por_defecto/capturas/capt3.png -------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/capturas/capt4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/programar_barras_progreso_por_defecto/capturas/capt4.png -------------------------------------------------------------------------------- /Español/extras/programar_barras_progreso_por_defecto/capturas/capt5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/Español/extras/programar_barras_progreso_por_defecto/capturas/capt5.png -------------------------------------------------------------------------------- /Español/teoria_python/compartir_variables.py: -------------------------------------------------------------------------------- 1 | from big_ol_pile_of_manim_imports import * 2 | 3 | class CompartirVariables(Scene): 4 | def construct(self): 5 | self.paso1() 6 | self.paso2() 7 | self.paso3() 8 | x,y=self.get_attrs("x","y") 9 | x+=1 10 | y+=1 11 | print("En construct: x= %s, y= %s,z= %s"%(x,y,self.z)) 12 | 13 | def paso1(self): 14 | x=9.5 15 | y=8.7 16 | self.set_variables_as_attrs(x,y) 17 | print("En paso 1: x= %s, y= %s"%(x,y)) 18 | 19 | def paso2(self): 20 | x,y=self.get_attrs("x","y") 21 | x+=1 22 | y+=1 23 | self.z=3 24 | print("En paso 2: x= %s, y= %s"%(x,y)) 25 | self.set_variables_as_attrs(x,y) 26 | 27 | def paso3(self): 28 | x,y=self.get_attrs("x","y") 29 | x+=1 30 | self.x=self.x*(-1) 31 | y+=1 32 | self.set_variables_as_attrs(x,y) # Jugar 33 | print("En paso 3: x= %s, y= %s, self.x= %s"%(x,y,self.x)) # con las posiciones de estas dos lineas -------------------------------------------------------------------------------- /HelloWorld.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/HelloWorld.gif -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | ## Temas del curso (actualizando) 4 | ## [Archivos del tutorial](https://drive.google.com/file/d/1O31Hk95q6D3Z6qWwkZcUW4fU9lLzJND2/view) 5 | ### Este tutorial está basado en la versión del [3 de febrero del 2019](https://github.com/3b1b/manim/tree/3b088b12843b7a4459fe71eba96b70edafb7aa78) 6 | 7 | 0. Instalación en [Windows](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/0_instalacion/windows/INSTRUCCIONES.md), [GNU/Linux](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/0_instalacion/gnuLinux/INSTRUCCIONES.md) y [Mac](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/0_instalacion/macOS/INSTRUCCIONES.md). 8 | 1. [Formato de textos (PDF)](https://drive.google.com/open?id=1BaWn_QJEz7hsizaLXFpM0YVOn9Gxi_Yn)/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/1_formato_textos/ESCENAS.md) 9 | 2. [Fórmulas en TeX (PDF)](https://drive.google.com/open?id=1sPksk698UezNpYn7piEuGEwIqJd8TZMd)/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/extras/formulas_tex/ESCENA.md) 10 | 3. [Efectos de texto usando arreglos (PDF)](https://drive.google.com/open?id=1i7maqGJcb8Nk5lQf--gsY4vBiIxpFI9M)/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/2_efectos_arreglos_texto/ESCENAS.md) 11 | 4. [Transformaciones y copiado de textos (PDF)](https://drive.google.com/open?id=1oy8Thm7aWkh705TaEpctCFdqW1D36wAo)/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/3_transformaciones_texto/ESCENAS.md) 12 | 5. [Herramientas visuales (PDF)](https://drive.google.com/open?id=15hk52wgaR4MeDZSvo8LlgbeWe6K6EXY7)/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/4_herramientas_visuales/ESCENAS.md) 13 | 6. Introducción a las gráficas 2D/YouTube/[Escenas](https://github.com/Elteoremadebeethoven/AnimacionesConManim/blob/master/Espa%C3%B1ol/5_introducci%C3%B3n_gr%C3%A1ficas/ESCENAS.md) 14 | 7. Introducción a las gráficas 3D/YouTube/Escenas 15 | 8. Agregar audio/YouTube 16 | 9. Agregar imagenes svg/YouTube/Escenas 17 | 10. Primer proyecto/YouTube 18 | 19 | Extras: 20 | * Dejar las barras de progreso por defecto. 21 | * Personalizar parametros del renderizado. 22 | * Modificar directorios de "media". 23 | 24 | ## ¿Qué es Manim? 25 | [Manim](https://github.com/3b1b/manim) es una herramienta gratuita de animación para Python creada por [Grant Sanderson](http://www.3blue1brown.com/) ([twitter](https://twitter.com/3blue1brown?lang=es)), matemático de Stantford y dueño del canal de YouTube [3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw). Está especializada en temas científicos, principalmente de carácter matemático, por lo que está basada en comandos de LaTeX (principalmente en TeX). 26 | 27 | ## ¿Qué es LaTeX? 28 | LaTeX es un procesador de textos especializado en el ambito científico, sin embargo, Manim sólo utiliza los comandos TeX (con algunas excepciones), que se refieren a la escritura de fórmulas. Un ejemplo del código en TeX es: 29 | ```latex 30 | \frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}. 31 | ``` 32 | Este comando TeX lo compila como: 33 |

34 | 35 | ## ¿Para quién va dirigido el curso? 36 | Este curso se dirige principalmente a profesores que quieran explicar de una forma didáctica y gráfica algún desarrollo matemático o la resolución de problemas especialmente complejos. El curso se extiende a cualquier persona que quiera explicar algún tema científico de una forma original. 37 | 38 | ## ¿Necesito saber programar en Python y LaTeX para entender el curso? 39 | Para entender el curso es posible no saber absolutamente nada de programación (aunque es preferible para que el aprendizage sea más rápido). Además de aprender Python 3 se requerirán conocimientos de TeX para la escritura de las fórmulas. De igual forma se darán a conocer herramientas como [Pencil chromestore](http://s1.daumcdn.net/editor/fp/service_nc/pencil/Pencil_chromestore.html), [Codecogs](https://www.codecogs.com/latex/eqneditor.php), [Rinconmatematico](http://rinconmatematico.com/mathjax/), [latex4technics](https://www.latex4technics.com/), [sciweavers](http://www.sciweavers.org/free-online-latex-equation-editor) entre otras páginas para aprender a escribir fórmulas en TeX. 40 | 41 | ## ¿Necesito una computadora moderna para usar Manim? 42 | No, con 512 MB de Ram y un procesador Intel Core Duo (o similar) es más que suficiente, la única diferencia entre una máquina potente y una de bajos recursos es el tiempo de compilación (entre menos recursos más tiempo demorará en compilar). 43 | 44 | ## ¿Qué ventajas ofrece Manim en contraste con otras herramientas de animación profesionales? 45 | ### Ventajas: 46 | * Es gratis y legal. 47 | * Funciona en Windows, GNU/Linux (cualquier distribución) y Mac perfectamente, aunque es preferible usar Mac o GNU/Linux. 48 | * Se puede usar en computadoras antiguas. 49 | * Al ser de código abierto es completamente personalizable al gusto del usuario. 50 | * Constantemente se está mejorando ya que nuevos usuarios tabajan en él a través de su repositorio oficial en [GitHub](https://github.com/3b1b/manim). 51 | * Los archivos de video son de muy alta calidad y ligeros. 52 | * Las fórmulas son creadas usando comandos TeX, por lo que son de calidad profesional (en lo que respecta a la comunidad científica). 53 | * En caso de no tener conocimientos de programación, es una buena herramienta para empezar a aprender Python 3 y LaTeX. 54 | ### Desventajas: 55 | * Si no tienes la paquetería de LaTeX (completa) instalada ocupará más de 6 GB de espacio en tu computadora. 56 | * No se usa una interfaz gráfica para realizar las animaciones, todo se basa en comandos de Python 3 y TeX. El ejemplo del cásico Hello world! sería: 57 | ```python 58 | from big_ol_pile_of_manim_imports import * 59 | class HelloWorld(Scene): 60 | def construct(self): 61 | helloWorld = TextMobject("Hello world!") 62 | self.play(Write(helloWorld)) 63 | self.wait() 64 | ``` 65 |

66 | 67 | ## Requerimientos 68 | * Python 3.7 69 | * pip (para instalar la lista de requirements.txt) 70 | * Pycairo (suele dar problemas en la instalación de requirements.txt por lo que es recomendable instalarla antes) 71 | * FFmpeg 72 | * LaTeX (Miktex para Windows y TexLive para GNU/Linux o Mac) completo 73 | * Sox 74 | * Requerimientos en la lista de requirements.txt 75 | 76 | Peso total aproximado: 5 GB (eliminando los instaladores) 77 | 78 | -------------------------------------------------------------------------------- /TeX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/TeX.png -------------------------------------------------------------------------------- /titulo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Elteoremadebeethoven/AnimacionesConManim/09dfe8482f3aa68534e8c8067d0e6445ac9652cd/titulo.gif --------------------------------------------------------------------------------