Visualización de Fractales 2D

Controles:

Ayuda

En los siguientes párrafos se explica de forma intuitiva el significado y el efecto provocado por cada uno de los parámetros modificables. Previamente, introducimos unas pequeñas nociones sobre cómo se grafican los conjuntos de Julia y Mandelbrot.

Partimos de la familia de funciones complejas \(P_{c,m}(z)=z^m + c\), siendo \(c\in\mathbb C\) un número complejo. A su vez, identificamos la pantalla con una región del plano complejo, asociando cada píxel de la pantalla a un número complejo. Para visualizar un conjunto de Julia, fijamos un número complejo \(c\in\mathbb C\), de forma que hay tantos conjuntos de Julia como números complejos, aunque los más interesantes son aquellos asociados a constantes \(c\) con módulo pequeño. Denotamos \(\mathcal J_{c,m}\) al conjunto de Julia asociado al complejo \(c\).

Así, para cada punto \(z_0\in\mathbb C\) (es decir, para cada píxel) calculamos la sucesión de iteradas \(z_0, P_{c,m}(z_0), P_{c,m}(P_{c,m}(z_0)),\dots\) Es decir, la sucesión \(z_0, z_0^m + c, (z_0^m + c)^m +c, \dots\) Si esta sucesión no diverge después de un número máximo de iteraciones que llamamos \(M\), se colorea el píxel asociado a \(z_0\) de negro. Si después de \(M\) iteraciones la sucesión diverge (un término de la sucesión es grande), se colorea de algún color.

De forma similar, para graficar el conjunto de Mandelbrot, \(\mathcal M_m\), tomamos \(z_0=0\) como primer término y para cada complejo \(c\in\mathbb C\) (es decir, para cada píxel) se calculan las iteradas \(0, P_{c,m}(0), P_{c,m}(P_{c,m}(0)),\dots\), es decir, \(0, c, c^m +c,\dots\) Si esta sucesión no diverge después de un número máximo de iteraciones que llamamos \(M\), se colorea el píxel asociado a \(c\) de negro. Si después de \(M\) iteraciones la sucesión diverge (un término de la sucesión es grande), se colorea de algún color.

Tras esta introducción, presentamos el significado de cada parámetro:

Botón 'Reset'

Al pulsarlo se restablecen los parámetros a los iniciales, es decir, los que había al cargar la página por primera vez.

Parámetros del fractal

Estos parámetros definen qué conjunto de Julia o Mandelbrot se visualiza. Podemos elegir entre qué conjuntos ver, si Julia o Mandelbrot, y en el caso de elegir que deseamos ver conjuntos de Julia, elegir qué constante \(c=x+i\cdot y\) fijar, pudiendo elegir la coordenada \(x\) y la coordenada \(y\). Ambos valores se permite que estén en el intervalo \([-2,2]\) por que fuera de esta región los conjuntos de Julia carecen de interés. También se puede elegir qué exponente \(m\) se fija en la función \(P_{c_m}(z)=z^{\mathbf m}+c\)

Se recomienda variar los exponentes y visualizar el conjunto de Mandelbrot estándar \(\mathcal M\) correspondiente a \(m=2\) y sus generalizaciones a órdenes superiores \(\mathcal M_m\), o seleccionar conjuntos de Julia y variar los deslizadores de \(x\) e \(y\) e ir viendo cómo cambian los conjuntos de Julia al variar la constante \(c\)

Algoritmo de visualización

En esta sección se pueden variar los parámetros relacionados no tanto con el fractal que estemos visualizando sino con el algoritmo utilizado para graficarlo y la calidad de la imagen. Está subdividida a su vez en varios subapartados.

Región del plano visualizada

Definimos dos números complejos a los cuales llamaremos \(\mathrm{LLC}\) (Lower Left Corner) y \(\mathrm{URC}\) (Upper Right Corner) como los números complejos que se identifican con los puntos situados en la esquina inferior izquierda y la esquina superior derecha de la región del plano que se visualiza en la pantalla. Estos valores son modificables, de forma que nos permiten movernos libremente por el plano complejo y fijar una de las dos y cambiar la otra, pudiendo así mostrar la región del plano que deseemos (siempre que se mantengan la proporción 16:9). Estos parámetros representan una alternativa al uso de las flechas y las teclas '+/-' para movernos por la región del plano.

Máximo número de iteraciones \(M\)

Valor de \(M\), es decir, el número máximo de iteraciones que se dan antes de decidir si las sucesiones convergen o divergen. A mayor número, mayor coste computacional pero mayor precisión en la representación.

Se recomienda ampliar alguna región del plano (con la tecla '+' y las flechas o con los parámetros de la región del plano visualizada) y aumentar este parámetro para observar cómo mejora la resolución.

CUIDADO: Un número alto de iteraciones por píxel aumenta considerablemente el coste computacional, por lo que no recomendamos abusar de la interactividad si no se dispone de una gráfica suficientemente buena.

Supersampling Antialiasing

Anteriormente hemos mencionado que se identifica cada píxel con un único punto del plano, pero esto suele provocar calidades bajas y bordes bruscos. Con este parámetro se permite identificar cada píxel con \(n^2\) puntos, calcular el color asociado a cada punto y finalmente asignar al píxel el color promedio. De esta forma se visualizan los bordes más suavizados y se obtienen imágenes de mayor calidad. Esta técnica se conoce como Supersampling Antialiasing (SSAA).

Recomendamos ampliar una región del plano, aumentar el número de iteraciones \(M\) y posteriormente activar el antialiasing y aumentar el número de puntos por píxel. En esta situación, puede activar y desactivar el parámetro y observar cómo cambia la imagen.

CUIDADO: Esta operación es considerablemente más costosa que el visualizado estándar, por lo que recomendamos no abusar de la interactividad con un número alto de puntos por píxel si no se dispone de una gráfica suficientemente buena.

ADVERTENCIA

Como se ha mencionado anteriormente, es posible que su dispositivo no soporte interactividad de forma fluida con un número alto de iteraciones y aplicando SSAA con un número elevado de muestras por píxel. Recomendamos por ello que si se utilizan valores altos, se desplace por el plano con pequeños incrementos, evitando mantener las teclas pulsadas.

En caso de que la web se sobrecargue, es posible que se ponga en blanco la pantalla. En este caso debe ser suficiente una simple recarga de la página para solucionarlo, aunque en ciertos casos puede ser necesario reiniciar el navegador.