'Análisis de Fourier: Dibujando Llamas con Círculos' es el título de una publicación en Dekau.dev que toma una herramienta matemática conocida principalmente por limpiar audio y comprimir imágenes y la dirige a un problema caprichoso: ¿cómo se dibuja una llama?

La transformada de Fourier, enmarcada por el autor, es una forma de moverse entre dos maneras de describir una señal. En el dominio del tiempo tienes una función que cambia con el tiempo, como una onda sonora. En el dominio de la frecuencia tienes una lista de qué frecuencias están presentes y qué tan fuerte es cada una. El ejemplo clásico de la publicación es la onda sinusoidal sin(2π×3t): su transformada de Fourier es un único pico en más y menos 3 hercios. Los ingenieros de audio usan esto para encontrar un zumbido no deseado y luego eliminarlo con la transformada inversa; los procesadores de imágenes usan ideas relacionadas para desenfoques gaussianos y compresión JPEG.

¿Cómo se convierte esto en dibujo? La definición de "dibujo" del autor es un trazado que puedes seguir poniendo grafito sobre papel y dibujando sin levantarlo hasta terminar. Dado tal trazado, puedes unir un conjunto de vectores extremo con extremo, cada uno girando en un círculo a su propia velocidad, con la cola de cada vector fijada a la punta del anterior. La punta del último vector se mueve entonces y, si has elegido los círculos correctamente, traza el boceto original.

Esta es la parte que sorprende a la gente, y vale la pena detenerse en la geometría, porque va en contra de la intuición. Los círculos no están todos anidados dentro de uno mismo de la manera que sugiere. El centro de cada círculo se sitúa sobre la punta del círculo anterior, y cada círculo gira alrededor de ese centro en movimiento. Así, el movimiento de cualquier círculo dado es la suma de todos los círculos anteriores: un círculo pequeño gira sobre la punta de uno más grande, que a su vez gira sobre la punta de uno aún más grande, y así sucesivamente. La publicación ilustra esto con una serie de casos simples. Una línea recta, de todas las cosas, puede producirse con círculos, una forma tan alejada de una línea recta como se pueda imaginar. Al encoger el círculo exterior y hacerlo girar más rápido, la misma disposición puede producir un cuadrado. Añade un tercer círculo y obtienes un pez. Para el ejemplo principal, el autor dibuja una llama usando 1,024 círculos, cada uno con su propia frecuencia, radio y ángulo inicial.

Una línea recta trazada por la punta de una cadena de círculos giratorios
Una línea recta producida por círculos giratorios, uno de los casos ilustrativos simples de la publicación.adekau.github.io

La publicación ilustra la geometría con casos simples, mostrando que incluso una línea recta puede producirse con círculos.

Un cuadrado trazado por la punta de una cadena de círculos giratorios
Un cuadrado producido encogiendo el círculo exterior y haciéndolo girar más rápido.adekau.github.io

Al encoger el círculo exterior y hacerlo girar más rápido, la misma disposición puede producir un cuadrado.

Un pez trazado por la punta de una cadena de círculos giratorios
Un pez producido añadiendo un tercer círculo a la disposición.adekau.github.io

Añade un tercer círculo y obtienes un pez, otro de los ejemplos desarrollados por la publicación.

Una onda cuadrada mostrada en el dominio de la frecuencia
Una onda cuadrada, la vista en el dominio de la frecuencia de una forma cuadrada.adekau.github.io

La onda cuadrada es la contraparte en el dominio de la frecuencia del cuadrado dibujado con círculos, ilustrando la dualidad tiempo/dominio de la frecuencia.

Lo que puedes ajustar en cualquier círculo es exactamente tres cosas: qué tan rápido gira (su frecuencia), qué tan grande es (su radio) y dónde comienza (su fase). La simplificación clave de la publicación es que las tres se pueden empaquetar en un solo número complejo. No es solo un truco notacional. Un número complejo a + bi ya codifica un punto en el espacio bidimensional, con la parte real en un eje y la parte imaginaria en el otro, y la identidad de Euler vincula las exponenciales complejas con la rotación. Así, un vector giratorio se escribe naturalmente como una exponencial compleja, y su velocidad resulta ser el mismo vector rotado 90 grados, que es exactamente por qué la unidad imaginaria aparece en lo que parece ser una afirmación sobre el movimiento. La frase de la publicación "la velocidad es lo mismo que la posición pero imaginaria en lugar de real" es esta observación: multiplicar por i rota un vector un cuarto de vuelta.

La pregunta restante es cómo pasas de un trazado dibujado al conjunto correcto de círculos en primer lugar. Ese es el verdadero trabajo de la transformada de Fourier, y la publicación llega a él a través de dos cuerpos de matemáticas. Primero, los números complejos como vectores bidimensionales. Segundo, el álgebra lineal: cualquier vector en el plano puede escribirse como una combinación de vectores base, y el producto punto te indica cuánto de cada vector base está contenido en el vector que estás descomponiendo. La publicación trabaja un ejemplo concreto, expresando el vector (0.7, 1.2) en términos de dos vectores unitarios ortogonales, y los productos punto resultan ser aproximadamente 1.34 y 0.35, los factores de escala exactos necesarios. La misma idea, extendida desde una lista finita de números hasta una función continua, se convierte en un producto interno definido por una integral: para dos funciones sobre un intervalo, integras una multiplicada por la conjugada de la otra y divides por el período. Un coeficiente de Fourier es entonces simplemente un producto interno entre el trazado y una seno o coseno de una frecuencia dada, una medición de cuánto de esa frecuencia está en el trazado. Suma todos esos componentes de frecuencia, cada uno realizado como un círculo giratorio, y reconstruyes el trazado. Entre más círculos incluyas, más el dibujo se acerca a la entrada original.

El autor no solo escribió las matemáticas; las construyó. El proyecto complementario en GitHub, adekau/fourier, es una aplicación Angular que implementa exactamente esto, con un servidor de desarrollo local donde puedes ver los círculos redibujar una forma en tiempo real.

Lo que la publicación puede y no puede hacer vale la pena decirlo con claridad, porque establece las expectativas correctas. El método funciona en una sola curva cerrada continua: algo que puedes dibujar en un solo trazo ininterrumpido. Por sí solo, no puede codificar un dibujo con piezas desconectadas o espacios, porque la punta del último vector nunca deja de moverse a lo largo de un camino continuo, y una cadena de círculos giratorios no tiene ningún mecanismo para "levantar el lápiz". La afirmación propia de la publicación está cuidadosamente redactada: "la mayoría de las curvas cerradas" pueden dibujarse de esta manera, y los 1,024 círculos de la llama son la ilustración elegida por el autor, no un mínimo teórico. La exposición es un recorrido educativo en lugar de un tratamiento riguroso, por lo que las condiciones precisas bajo las cuales la aproximación converge están fuera de lo que cubre la publicación.

Visto en su totalidad, la pieza es una demostración sorprendente de que una forma complicada puede descomponerse en movimientos periódicos simples, el mismo principio que te permite aislar un solo instrumento en una mezcla o desenfocar una fotografía, ahora aplicado al dibujo a lápiz. Funciona como una herramienta de enseñanza porque hace que lo abstracto, de pasar del tiempo a la frecuencia, sea concreto y visible: literalmente puedes ver una llama emerger de círculos giratorios.