Math animations
Proyecto para visualizar objetos matemáticos y el comportamiento de ecuaciones mediante animaciones generadas con Python.
La idea
Muchos conceptos matemáticos se entienden mucho mejor cuando se ven en movimiento: cómo cambia una curva al variar un parámetro, cómo se comporta una función, cómo se construye una figura paso a paso. La intención de este proyecto es justamente esa: convertir ecuaciones y objetos abstractos en animaciones que ayuden a la intuición.
Guía rápida:
Las animaciones se generan con Python, casi todo está hecho con matplotlib; algunos scripts en 3D
o de juegos usan pygame y OpenGL, y se exportan a
formato GIF o MP4.
1. Clonar e instalar
git clone https://github.com/jabud/math_animations.git
cd math_animations
Recomiendo un ambiente aislado para no ensuciar tu Python:
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
El
requirements.txtes de hace unos años (época de Python 3.6). Si algo no instala, lo más práctico es crear el ambiente e instalar solo lo que cada script necesita: casi todos corren conmatplotlib,numpyyscipy. Los scripts en 3D o de juegos piden ademáspygameyPyOpenGL.
2. La fuente (opcional)
Algunos scripts usan una fuente de pixeles llamada alterebro pixel font. Si quieres que los textos se vean como en los ejemplos, descárgala y guárdala dentro de tu instalación de matplotlib:
.../site-packages/matplotlib/mpl-data/alterebro_pixel_font/alterebro-pixel-font.ttf
Si no la instalas, la animación corre igual pero con la fuente por defecto.
3. Correr una animación
Cada script es un ejemplo independiente y se corre desde la raíz del
repositorio (así encuentra el módulo canvas):
python calculus/partial_derivative.py
Se abre una ventana con la animación. Otros ejemplos para probar:
python geometry/cube_skeleton.py # esqueleto de un cubo en 3D
python linear_regression/least_squares.py
python logistic_regression/sigmoid_function.py
4. Interactuar con la animación
Los ejemplos de linear_regression y calculus se controlan con el teclado,
paso a paso:
- Números
1aN— avanzan cada etapa de la animación. 0— reinicia la animación.i— guarda una imagen del cuadro actual (con fondo).I(mayúscula) — guarda la imagen con fondo transparente.
5. Temas de color
Muchos scripts aceptan un tema dark o light. Se cambia en la función main
del propio script, al crear el objeto:
mo = MathObject(theme='dark') # o theme='light'
Cómo está organizado
Cada carpeta agrupa un tipo de ejemplo:
calculus/— derivadas, derivadas parciales.linear_regression/— rectas, mínimos cuadrados, funciones de error.logistic_regression/— función sigmoide.geometry/— figuras y transformaciones (rotación, escala, simetría).svm/— kernels y el kernel trick.decision_tree/,landscapes/,games/,text/— otros experimentos.
El archivo template.py en la raíz es una plantilla para crear una animación
nueva desde cero, y canvas/canvas2d.py es la base que reutilizan varios
scripts para dibujar los ejes y el lienzo.
El código está en el repositorio.