diff --git a/README.es-ES.md b/README.es-ES.md new file mode 100644 index 0000000..747a836 --- /dev/null +++ b/README.es-ES.md @@ -0,0 +1,64 @@ + + +# Grafos Crecientes & Visualización de Alto Rendimiento - ✨[DEMO](https://znah.net/graphs/)✨ + +

+ +

+ +Un motor de alto rendimiento para simular y visualizar grafos crecientes basados en reglas. Este proyecto combina autómatas de reescritura de grafos con un motor de disposición dirigido por fuerzas personalizado, optimizado mediante WebAssembly y WebGL. + +## 🚀 Características Principales + +- **Física de Alto Rendimiento**: Toda la lógica central de la simulación (fuerzas multipartícula, fuerzas de enlace y construcción de octo-árbol) está implementada en **WebAssembly (C)** para un rendimiento casi nativo. +- **Optimización de N-Cuerpos**: Implementa un algoritmo de Barnes-Hut de doble árbol en WASM para cálculos eficientes de fuerzas de carga $O(N \log N)$. +- **Renderizado Acelerado por GPU**: Utiliza **SwissGL** (WebGL 2.0) para una visualización fluida y de alto ancho de banda de miles de nodos y enlaces. +- **Crecimiento Dinámico**: Los nodos evolucionan según reglas de reescritura basadas en el vecindario, creando estructuras emergentes complejas a partir de condiciones iniciales simples. +- **Modo Autónomo**: Un modo de arte generativo con detección agresiva de estancamiento, recuperación inducida por ruido y transiciones suaves entre reglas procedurales. + +## 🎨 Agradecimientos e Inspiración + +Este proyecto se inspira significativamente en la siguiente investigación sobre autómatas basados en grafos y complejidad emergente: + +- **[Autómatas de Reescritura de Grafos](https://paulcousin.net/graph-rewriting-automata/introduction.html)** por Paul Cousin — Una exploración de la evolución de grafos basada en reglas. +- **[Grafos Crecientes](https://arxiv.org/abs/2211.13619)** (*arXiv:2211.13619*) — Investigación sobre las propiedades estructurales y la evolución de sistemas procedurales de grafos. + +## 🛠 Stack Tecnológico + +- **Lógica Central**: JavaScript (ES6+) +- **Motor de Física**: WebAssembly (compilado desde C mediante `zig build-exe`) +- **Renderizado**: [SwissGL](https://github.com/google/swissgl) (WebGL 2.0) +- **Post-procesamiento**: Filtro Bloom personalizado y mapeo de colores GLSL. + +## 🏗 Instrucciones de Compilación + +Para compilar el núcleo de WebAssembly: + +```bash +bash build.sh +``` + +Requiere el compilador **[Zig](https://ziglang.org)** para el objetivo `wasm32-freestanding`. + +## 📂 Estructura del Proyecto + +- `src/main.c`: Núcleo de física WASM (Octo-árbol, Barnes-Hut, Fuerzas de enlace). +- `js/app.js`: Controlador de aplicación de alto nivel y comportamiento autónomo. +- `js/force.js`: Interfaz entre JS y la física WASM. +- `js/graph.js`: Gestión de grafos y lógica de reescritura. +- `js/bloom.js`: Efecto de post-procesamiento Bloom. +- `js/tree.js`: Implementación de octo-árbol en JS puro (mantenida como referencia). +- `lib/`: Dependencias externas (SwissGL, dat.gui). +- `index.html`: Visor de simulación interactivo. +- `alice.html`: Modo de arte generativo autónomo. + +## 🤖 Asistencia en el Desarrollo con IA + +Este proyecto fue desarrollado con la asistencia de **Gemini**, el cual ayudó en: +- Portear la lógica compleja de grafos y octo-árboles de JavaScript a WebAssembly (C) de alto rendimiento. +- Architectar y optimizar el algoritmo de Barnes-Hut de doble árbol para cálculos de fuerza $O(N \log N)$. +- Refactorizar la base de código en una arquitectura modular y reutilizable. + +## 📄 Licencia + +Este proyecto está licenciado bajo la **Licencia MIT**. Consulte el archivo `LICENSE` para más detalles.