El otro día estaba yo en el Twitter de Pybonacci para variar, y se me ocurrió que tal vez la imagen que representaba al blog en aquel momento, aunque había valido para salir del paso unos meses, no era demasiado significativa y que necesitábamos un cambio:
¿Quién más piensa que necesitamos un logo con un poco más de personalidad? =)
— Pybonacci (@Pybonacci) September 28, 2012
Algunas personas se interesaron y Kiko sugirió entonces usar fractales, concretamente una rosa de Fibonacci:
@Pybonacci @python_majibu @nessa_los [k] un fractal de fibonacci http://t.co/viWGKLii http://t.co/CvPaR8Mu
— Pybonacci (@Pybonacci) September 28, 2012
Ayer vi en los borradores del blog que había vuelto a rescatar el tema, y dije: ¡esta es mi oportunidad! Así que después de un par de iteraciones, Kiko dio con una idea genial: ¿por qué no generar el logo de Pybonacci con un script Python? 🙂 ¡Y eso es lo que hicimos!
Os presentamos al Pybofractal, el nuevo logo de Pybonacci:
Y este es el código que utilizamos para generarlo. Kiko es el autor principal, yo solo me encargué de los colores 😉
[sourcecode language=”python”]
# coding: utf-8
#
# Script Python para generar el Pybofractal.
# Autor: Kiko Correoso
# Colores y acomodación a PEP8 por Juan Luis Cano
import numpy as np
from matplotlib import pyplot as plt
def pybofractal(pto, lado, iteraciones, ax):
"""Genera el Pybofractal, el logo de Pybonacci.
"""
colors = [‘#39719e’, ‘#3d79aa’, ‘#4385bb’, ‘#5390c1’,
‘#70a4cb’, ‘#ffe771’, ‘#ffd333’, ‘#ffcf23’]
ax.axis(‘off’)
punto1 = pto
punto2 = (punto1[0] + lado * np.cos(np.deg2rad(60)),
punto1[1] + lado * np.sin(np.deg2rad(60)))
punto3 = (punto1[0] + lado, punto1[1])
ax.fill((punto1[0], punto2[0], punto3[0], punto1[0]),
(punto1[1], punto2[1], punto3[1], punto1[1]),
edgecolor="w", linewidth=2.0, facecolor=colors[0])
def cambio_coord((x, y), (x0, y0), i):
x1 = ((x – x0) * np.cos(np.deg2rad(360 – (i * 60))) –
(y – y0) * np.sin(np.deg2rad(360 – (i * 60)))) + x0
y1 = ((x – x0) * np.sin(np.deg2rad(360 – (i * 60))) +
(y – y0) * np.cos(np.deg2rad(360 – (i * 60)))) + y0
return (x1, y1)
for i in range(1, iteraciones):
punto1 = punto2
punto2 = (punto1[0] + lado * np.cos(np.deg2rad(60)) / ((2. / 3) ** i),
punto1[1] + lado * np.sin(np.deg2rad(60)) / ((2. / 3) ** i))
punto3 = (punto1[0] + lado / ((2. / 3) ** i), punto1[1])
punto2 = cambio_coord(punto2, punto1, i)
punto3 = cambio_coord(punto3, punto1, i)
ax.fill((punto1[0], punto2[0], punto3[0], punto1[0]),
(punto1[1], punto2[1], punto3[1], punto1[1]),
edgecolor="w", linewidth=2.0 + 0.618 * i, facecolor=colors[i])
fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111)
ax.set_aspect(1)
pybofractal((0, 0), 1, 7, ax)
plt.savefig(‘pybofractal.svg’)
[/sourcecode]
Esperemos que os guste, ¡un saludo a todos!
Realmente estabais inspirados cuando se os ocurrió! Muy bueno; simple, limpio, bonito… felicidades!
¡Mil gracias! Puro trabajo en equipo jejeje 🙂 ¡Un saludo!
Después de leer esta encantadora entrevista:
http://www.jotdown.es/2012/08/clara-grima-lo-que-mas-me-preocupa-es-como-popularizar-las-matematicas/
Y esta entrada en el blog de gaussianos:
http://gaussianos.com/el-fractal-de-fibonacci-una-autentica-belleza-de-construccion/
Se me ocurrió darle unas vueltas al asunto.
Con los retoques finales de Juanlu queda algo aparente, ¿no? 😛