XaoS (se pronuncia chaos) es un programa interactivo de ampliación (zoom) de fractales que permite al usuario acercarse y alejarse continuamente de un fractal en tiempo real.
XaoS se distribuye como software libre bajo la GPL y es un programa multiplataforma, disponible para distintos sistemas operativos como Linux, Windows, Mac OS X, BeOS y otros. En años recientes también se ha publicado una versión web que puede funcionar sin conexión, accesible en https://xaos.app.
XaoS puede mostrar el Conjunto de Mandelbrot (potencias 2, 3, 4, 5 y 6), el Octo fractal, tres tipos de fractales de Barnsley, el Fractal de Newton (orden 3 y 4), el fractal Phoenix y Magnet (1 y 2). También puede generar conjuntos de Julia a partir de regiones seleccionadas de otros fractales, y permite introducir fórmulas personalizadas.
Versiones anteriores de XaoS podían representar fractales como Arte ASCII usando AAlib, lo que, junto con su integración con herramientas de GNU, permitía ejecutarlo prácticamente en cualquier lugar. Versiones más recientes emplean la biblioteca multiplataforma Qt.
El programa incluye ayuda interactiva y una introducción animada a los fractales. Dicha introducción se organiza en diez capítulos que presentan distintas fórmulas disponibles en el software y sus características.
Algoritmo de Hubička XaoS empezó siendo un visor del conjunto de Mandelbrot descrito por su autor como "mal escrito", hasta que Jan Hubička añadió un método de zoom eficiente, conocido a veces como algoritmo de XaoS o algoritmo de Hubička.
En aquella época, las películas de zoom sobre fractales se producían recalculando por completo cada fotograma, a pesar de que fotogramas consecutivos comparten de forma natural grandes zonas en común. Esto hacía imposible un zoom interactivo sin ordenadores muy potentes. Además, salvo que se aplicara procesamiento adicional para antialiasing, recalcular cada fotograma podía producir un efecto de «parpadeo» cuando pequeñas zonas brillantes aparecen y desaparecen entre píxeles.
Permitir que el usuario haga zoom de forma fluida, en lugar de "saltos" como en Fractint, resultaba una forma más natural de interactuar con fractales. Para conseguirlo, Hubička necesitaba reutilizar cálculos ya realizados. Guardar cada píxel calculado consumiría demasiada memoria, así que el algoritmo conserva solo el fotograma anterior y, en vez de recordar la posición exacta de cada píxel, mantiene filas y columnas alineadas y reutiliza esas filas/columnas.
La parte más difícil del algoritmo consiste en decidir qué filas y columnas guardadas se dibujan en cada posición. Si se elige mal, la imagen se distorsiona, pero debe hacerse lo bastante rápido como para que el zoom resulte útil. Tras probar varias heurísticas, el problema se trató como uno de optimización.
Las filas y columnas que faltan se colorean inicialmente igual que la fila o columna más cercana, y se recalculan en cuanto la CPU tiene tiempo disponible. El algoritmo equilibra mantener el movimiento de zoom con aumentar el nivel de detalle: se prioriza el área hacia la que se está haciendo zoom (porque permanecerá más tiempo en pantalla y suele ser donde mira el usuario). Al alejarse, ocurre lo contrario y se priorizan los bordes.
El algoritmo de Hubička también puede aplicarse a zoom interactivo sobre otras imágenes en las que los píxeles se calculan, y se ha utilizado en otros programas de ampliación de fractales y visualización matemática.
Referencias
Enlaces externos
Sitio web oficial Página de XaoS en GNU Repositorio en GitHub Versión web
Categoría:Software matemático Categoría:Software libre Categoría:Software del Proyecto GNU Categoría:Fractales Categoría:Software para Linux