Espirales de Fibonacci
Escrito y programado por David Crespo
Madrid, Febrero de 2020
Desde hace algún tiempo me ha interesado la geometría de las espirales del girasol (y de otras plantas, desde margaritas a piñas) y he dedicado algún tiempo a escribir programas para dibujarlas en detalle.
Si nos fijamos en un girasol, se puede ver que sus flores (que acabarán convertidas en deliciosas pipas) están dispuestas formando espirales entrecruzadas.
Lo que no es tan evidente es que el número de espirales es siempre un número de la serie de Fibonacci. Si contamos espirales en un sentido (color azul), obtenemos 34 espirales.
Si contamos espirales en el otro sentido (color rojo), obtenemos 55 espirales. Tanto 34 como 55 pertenecen a la serie de Fibonacci.
Si contamos el número de espirales en ambos sentidos en un girasol, una margarita o una piña, obtendremos dos términos consecutivos de la serie de Fibonacci. Cuantas más semillas (o puntos) tenga la planta, obtendremos números más grandes. Por ejemplo en un girasol con pocas semillas tendríamos espirales de 21 y 34, si tuviera más serían 34 y 55, si tuviera muchas serían 55 y 89. El motivo lo veremos más adelante en este artículo.
La serie de Fibonacci es una serie de números muy sencilla de obtener:
- Cada término es la suma de los dos anteriores.
- Los dos primeros términos de la serie son 0 y 1.
Con estas dos reglas, obtenemos la secuencia
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
Cada término, salvo los dos primeros, se calcula sumando los dos anteriores:
t1 = 0
t2 = 1
t3 = 1 = 0 + 1 = t1 + t2
t4 = 2 = 1 + 1 = t2 + t3
t5 = 3 = 1 + 2 = t3 + t4
t6 = 5 = 2 + 3 = t4 + t5
t7 = 8 = 3 + 5 = t5 + t6
t8 = 13 = 5 + 8 = t6 + t7
t9 = 21 = 8 + 13 = t7 + t8
...
Una propiedad de la serie de Fibonacci es que la proporción entre un término y el anterior, segun vamos avanzando en la serie, tiende al número áureo Φ (Phi):
Φ = (1 + √5) / 2
Φ ≃ 1.61803398874...
2 / 1 = 2
3 / 2 = 1.5
5 / 3 = 1.666...
8 / 5 = 1.6
13 / 8 = 1.625
21 / 13 = 1.615384...
34 / 21 = 1.619047...
55 / 34 = 1.61764705...
89 / 55 = 1.6181818....
Cuanto mayores los términos, más se aproxima su razón a Φ.
Voy a empezar a plantear algunos requisitos preliminares para dibujar una figura parecida a un girasol. Para ello tengo que dibujar en coordenadas polares, vamos a ver su relación con las coordenadas cartesianas.
Las coordenadas cartesianas son las más habituales, el eje X es el eje horizontal (permite mover un punto de izquierda a derecha) y el eje Y el vertical (permite moverlo de arriba a abajo). Con dos números (x, y) podemos definir una posición en un plano bidimensional.
x = XX y = YY
Las coordenadas polares también permiten definir la posición de un punto mediante dos números, pero esos dos números representan la posición del punto en una circunferencia:
- La distancia del punto al origen (r)
- El ángulo del punto con respecto a una dirección de referencia (α, en radianes)
r = RR a = A.AA
El ángulo en radianes, entre 0 y 2π, se corresponde con un ángulo en grados entre 0 y 360º.
Para obtener coordenadas cartesianas (x, y) a partir de coordenadas polares (r, α) emplearíamos las ecuaciones:
x = r · cos(α)
y = r · sin(α)
Ántes de dibujar un girasol, vamos a empezar dibujando una espiral sencilla. Para ello, utilizamos la siguiente expresión en coordenadas polares:
r = t
α = 2 · π · t
Siendo t un parámetro real que va entre 0 y tmax = 20 en este ejemplo.
t=TT
En el gráfico anterior, los valores reales (enteros y no enteros) de t producen la espiral, mientras que los puntos corresponden a los valores enteros de t.
Para la expresión anterior, las semillas estarían en línea, partiendo desde el centro. Una expresión más interesante sería:
r = t
2 · π · t
α = ———————————
k
Para valores enteros de k, tenemos semillas que se distribuyen en k ramas. Por ejemplo, para k = 2, tenemos una nueva semilla cada media vuelta y por lo tanto tenemos dos ramas; para k = 3 tenemos una nueva semilla cada tercio de vuelta y por lo tanto 3 ramas.
Pero esta distribución de semillas en líneas rectas no sucede en el girasol, que tiende a empaquetar sus semillas de una manera más compacta, sin dejar huecos.
Para dibujar algo parecido a un girasol, necesitamos utilizar un valor de k igual a Φ, el número áureo:
k = Φ = 1.61803398874...
t=TT
Podemos definir cada semilla mediante sus coordenadas polares (r, α). Para 2 semillas consecutivas, con ángulos α1 y α2, el ángulo que forman es de
2 · π
Δα = α2 - α1 = ——————— = 2 · π · φ
Φ
siendo φ (phi minúscula) el inverso de Φ (Phi mayúscula)
1
φ = ————— = 0.61803398874...
Φ
t=TT
El ángulo entre semillas consecutivas es algo más de media vuelta (~0.618 · 2π), o lo que es lo mismo, φ (phi minúscula) veces una vuelta completa.
Llegados a este punto, podemos escribir la ecuación básica para las semillas del girasol como:
r = i
α = i · 2 · π · φ
Siendo i un número entero positivo, al que llamaremos índice de semilla.
En la siguiente figura dibujamos únicamente las semillas. Podemos ver que al aumentar el número de semillas empezamos a poder ver espirales como las del girasol:
t=TT
Un detalle importante es que percibimos las espirales uniendo los puntos, es decir, considerando que semillas cercanas forman parte de la misma línea.
Para entender cómo aparecen los términos de la serie de Fibonacci en las espirales del girasol, necesitamos numerar las semillas. En la siguiente figura, dentro de cada semilla, se dibuja su índice:
t=TT
Con las semillas numeradas, ahora dibujaré líneas que unan parejas de semillas entre sí, de modo que la semilla de índice i se unirá con la semilla de índice i + N.
N es un número perteneciente a la serie de Fibonacci, y para un N dado, habrá N espirales dibujadas mediante segmentos rectos. Por ejemplo, para N = 5, hay 5 espirales:
la que une 0 con 5 con 10 con 15...
la que une 1 con 6 con 11 con 16...
la que une 2 con 7 con 12 con 17...
la que une 3 con 8 con 13 con 18...
la que une 4 con 9 con 14 con 19...
t=TT
Una propiedad interesante de las espirales con parámetro N es que son adecuadas para un rango determinado de semillas. Un segmento de espiral "adecuada" debe unir semillas cercanas entre sí.
Cuando un segmento une semillas alejadas entre sí deja de ser adecuado. Por ejemplo, en la figura anterior, ajustamos el valor de imax al valor máximo (99) y dibujamos la espiral para N = 5.
Si nos fijamos en la parte de abajo, en la semilla 74, vemos que se une con la 79(74+5), que está bastante más lejos que la 82(74+8), la 87(74+13), y la 95(74+21).
En la siguiente figura se puede ver en detalle:
t=TT
Todavía no hemos visto qué sucede cuando utilizamos un parámetro N para conectar semillas que NO forma parte de la serie de fibonacci. Lo que sucede es que se conectan semillas alejadas entre sí, que nunca formarían una espiral a simple vista.
t=TT
En la siguiente figura dibujaremos dos juegos de espirales con parámetros N1 y N2, términos consecutivos de la serie de Fibonacci.
De las dos espirales, una gira en un sentido y la otra en sentido contrario, y al entrecruzarse se forman cuadriláteros.
n1 = NN n2 = NN i = ii
Una vez más, vemos que cuanto más los parámetros N1 y N2, más adecuados son para valores más altos del índice de semilla.
En la figura anterior, los valores más adecuados son:
N1 = 8 y N2 = 13 para imax ≃ 100
N1 = 13 y N2 = 21 para imax ≃ 220
N1 = 21 y N2 = 34 para imax ≃ 460
N1 = 34 y N2 = 55 para imax ≃ 1000
En este contexto, "adecuado" significa que el cuadrilátero resultante es lo más parecido posible a un cuadrado (y menos parecido a un romboide).
Continuará...