# XaoS

XaoS é um programa interativo de zoom em fractais. Permite ao usuário continuamente aproximar e afastar um fractal em tempo real.
O XaOS é licenciado sob a GPL. O programa é multiplataforma e está disponível para uma variedade de sistemas operacionais, incluindo GNU/Linux, Windows, Mac OS X, BeOS e outros.
O programa pode exibir o Conjunto de Mandelbrot (potências 2, 3, 4, 5 e 6), o Octo-fractal, três tipos de fractais de Barnsley, o Fractal de Newton (ordens 3 e 4), o fractal Fênix, o o Ímã (1 e 2). O XaOS pode exibir o Conjunto de Julia das partes selecionadas do fractal. Também permite que você entre com suas próprias fórmulas personalizadas.
O XaOS é capaz de exibir fractais como arte ASCII usando a AAlib que, em combinação com o fato de o programa ser construído em ferramentas GNU livremente disponíveis, permite rodar em quase qualquer lugar.
Uma ajuda interativa e uma introdução animada aos fractais são dadas no programa. A introdução está em 10 capítulos, lidando com as diferentes fórmulas apresentadas no software e seus recursos.

## Algoritmo de Hubička

O XaOS era originalmente apenas um visualizador Mandelbrot "pobremente escrito" até Jan Hubička adicionar recursos eficientes de zoom, usando uma técnica algumas vezes chamada de algoritmo XaoS ou algoritmo Hubička.
Na época, os filmes de zoom de fractais eram produzidos ao recalcular cada quadro completamente, embora eles naturalmente tivessem muito de sua área em comum com os outros. Isso tornava o zoom interativo impossível em computadores de pouca potência. Além disso, a menos que mais processamento seja usado a fim de fazer serrilhamento, recalcular cada quadro produz um efeito cintilante, como por exemplo pequenas áreas de brilho se chocam e, então, desaparecem entre os pixels.
No entanto, permitindo que o usuário aproxime, ao invés de pular como no software Fractint, parecia que a forma mais natural para interagir com fractais. A fim de criar um zoom interativo, Hubička precisou descobrir uma forma de salvar os cálculos que já estavam feitos. Seria preciso muita memória para salvar cada pixel já calculado, assim o algoritmo de Hubička apenas salva o quadro anterior, e ao invés de lembrar a localização de cada pixel, ele pode mantê-los alinhados em linhas e em colunas e lembrá-las.
A parte mais difícil do algorítimo XaOS era escolher quais linhas e colunas salvas desenhar. Produzindo esses resultados incorretos em imagens distorcidas, no entanto, necessita ser feito rapidamente para ser útil. Após muitas heurísticas diferentes terem sido tentadas, o problema era tratado como uma questão de otimização.
As linhas e as colunas restantes são coloridas na mesma cor que a linha ou coluna mais próxima e são rapidamente calculadas quando a CPU obtém tempo para isso. Esse é um balanço cuidadoso entre manter o zoom avançando e aumentar o nível de detalhes. Calcular áreas onde a imagem está sendo ampliada significa colocar em uma prioridade mais alta, desde que estejam na tela por mais tempo e essa é provavelmente onde o usuário está olhando. Afastando, o contrário acontece e a prioridade está nos contornos.
O algoritmo Hubička pode ser utilizado para aproximar imagens nas quais os pixels são calculados. Também tem sido usado em outros softwares, como o programa de desenho da função complexa rtzme, e outros ampliadores de fractais.