Los fractales fueron mi primera introducción a la matemática como ocio. Me fue fascinante que una estructura tan compleja y de apariencia biológica sea explicada con un simple proceso repetitivo.
Al empezar este proyecto quería desarrollar un código que copie este exacto proceso, imitando un dibujo a mano. Toda mi experiencia previa con generación de gráficos había sido en Python, para el procesamiento de datos. Nunca antes había desarrollado codigo con un enfoque tan artístico. Por lo que mi primera idea fue ver que estaban haciendo otros para lograr este resultado.
Mi punto de partida fue este tutorial por The Coding Train, donde trabaja con vectores. Decidí tomar otra alternativa, ya que no buscaba una generación infinita, e imaginaba una animación al estilo "3D pipes" de windows 98. Asi decidi trabajar en javaScript implementando un canvas 2d.
Este fractal, la "Curva de Dragon", se crea al copiar, rotar, concatenar y repetir. Empieza con una linea que se rota 90° sobre uno de sus extremos. Esta figura L resultante se vuelve a rotar 90° sobre uno de sus extremos. Despues de 6 iteraciones se puede empezar a ver la forma característica de este fractal.
By Rjlarso - Own work, CC BY-SA 4.0, Link
Para crear un array de puntos con los que luego trazar mi curva se creo una clase punto y siguio este proceso de copiar, rotar y concatenar. Rotar implicaba aplicar la transformacion (x,y) → (y,-x) a todos los puntos de la copia.
Las mayores complicaciones de este proyecto vinieron de la falta de experiencia con las herramientas del elemento canvas en JS, pero haber tenido una idea tan clara de proceso y resultado final lo hizo más fácil.
Se puede ver el codigo en accion tanto por este generador de fractal interactivo, o en mi repositorio git.