Diversión con Fractales (Julia)

Algo realmente simple que encontré aquí:

Un fractal es un patrón interminable. Los fractales son patrones infinitamente complejos que son auto-similares a través de diferentes escalas. Se crean repitiendo un proceso simple una y otra vez en un bucle de retroalimentación continuo. Impulsados por la recursión, los fractales son imágenes de sistemas dinámicos, las imágenes del Caos. Geométricamente, existen entre nuestras dimensiones familiares. Los patrones fractales son extremadamente familiares, ya que la naturaleza está llena de fractales. Por ejemplo: árboles, ríos, costas, montañas, nubes,conchas marinas, huracanes, etc. Fractales abstractos, como el Conjunto de Mandelbrot, pueden ser generados por una computadora que calcula una ecuación simple una y otra vez.

Lo que esto dice es que los fractales se pueden pensar como un proceso iterativo y repetitivo. Considere las semillas de girasol en la imagen de abajo:

Fuente: https://www.greenmylife.in/shop/seeds/flowering-annuals-seeds/sunflower-seeds/large-bloom-sunflower/

Como pueden ver, existe una secuencia observable allí. El patrón, que sigue la secuencia de Fibonacci, es el comportamiento de fondo matemático seguido por las semillas de girasol. Dado que es iterativo y repetido, se puede pensar en un factorial cuya ecuación es altamente dependiente de la ración dorada (1.618…), que es la relación entre un número y el número anterior en una secuencia de Fibonacci.

Hay muchos procesos naturales, que siguen un proceso muy específico y repetitivo, y parece como si un sólido fondo matemático estuviera gobernando su comportamiento.

Fractales de Julia

«Julia» es una clase de funciones matemáticas complejas, cuyo comportamiento, aunque repetitivo, se dice que es «Caótico». Según un artículo de Wikipedia:

Caos: Cuando el presente determina el futuro, pero el presente aproximado no determina aproximadamente el futuro.

De acuerdo con una explicación muy simple, pero elegante aquí:

Los fractales de conjuntos de Julia se generan normalmente inicializando un número complejo z = x + yi donde i^2 = -1 y x e y son coordenadas de píxeles de imagen en el rango de aproximadamente -2 a 2. Luego, z se actualiza repetidamente usando: z = z^2 + c donde c es otro número complejo que da un conjunto específico de Julia. Después de numerosas iteraciones, si la magnitud de z es menor que 2, decimos que el píxel está en el conjunto de Julia y lo coloreamos en consecuencia. Realizar este cálculo para una cuadrícula completa de píxeles da una imagen fractal.

Yep. De eso se trata, y ahora veremos cómo podemos implementar todo esto en un script python muy corto.

En primer lugar, necesitamos una biblioteca para tratar con las imágenes, y otra biblioteca para tratar con el trazado.

Importar el material necesario

A continuación, necesitamos definir algunas constantes globales para nosotros, que ayudarán en el proceso de generación de fractales.

A continuación, vemos la potencia de todo este post, la función central que en realidad genera un fractal y devuelve una imagen de mapa de bits. Se establecen algunas entradas predeterminadas para la función, que generarán el fractal exacto, como se usa en la foto de portada de este post, pero puedes retocar con diferentes entradas para generar tus propios fractales únicos. El código es en cierto modo una forma modificada del núcleo original escrito aquí.

Ahora, ya que tiene una función definida, solo tiene que llamarla y trazarla de esta manera:

Solo para hacerte la vida más fácil, aquí tienes el código completo en una sola esencia (en caso de que no tengas ganas de copiar fragmentos individuales).

he probado con varias configuraciones, y aquí están algunos resultados interesantes:

Julia Fractal: cX = 0.285, cY = 0.01, colorTup = (14, 13, 7)

Julia Fractal: cX = 1-goldenRatio, cY = 0, maxIter = 64, colorTup = (12, 17, 7)

Y por último, vamos a tratar de conseguir algo «Gótico» por el cambio de nuestras entradas.

Julia Fractal: cX = -0.7269, cY = 0.1888, maxIter = 255, ColorUp = (0, 0, 1)

Como puede ver, con un cambio muy pequeño (dentro de menos de 1 unidad) en las entradas de nuestra función, podemos generar una secuencia totalmente nueva. Eso es un caos. El presente aproximado no predice el futuro aproximado. Para decirlo de una manera sencilla,

Es como si tuviera un pincel, seleccionara algunos colores, pero no tengo idea de lo que hará el pincel tan pronto como toque el lienzo. Sólo pinta caos.

¿Qué sigue? Podemos generar fractales 3D, que se ven mucho más geniales que cualquier cosa que hayas visto, si se renderizan con los detalles adecuados.

Este es un buen desafío para ti si quieres llevarlo a un nivel completamente nuevo. Si puedes generar imágenes como esta, estoy seguro de que también podrás generar videos, y podría terminar obteniendo algo tan genial como esto:

Fuente: https://en.wikipedia.org/wiki/Julia_set#/media/File:JSr07885.gif

Esto es solo una introducción a Julia fractals. Hay muchos otros tipos de fractales, que se pueden generar modificando la ecuación subyacente, es decir, z = z2 + c. Estaré muy contento (como, realmente) si descubre patrones nuevos y mejores utilizando otros tipos de fractales, y puede llegar a una salida artística impresionante. En caso de que lo hagas, házmelo saber. ¡Despídete, ni ahora!

You might also like

Deja una respuesta

Tu dirección de correo electrónico no será publicada.