En este proyecto, exploro la teselación hexagonal, mostrando cómo se forma un panal de abejas. Es una forma perfecta de introducir a los estudiantes en conceptos de simetría, teselación y sus aplicaciones en la naturaleza.
# ------ · ------ · ------ MatemáTICas: 1,1,2,3,5,8,13,... ------ · ------ · ------ #
# Librerías
import math
import time
import random
# #
time.sleep(2)
print(" ------ · MatemáTICas: 1,1,2,3,5,8,13,... https://matematicas11235813.luismiglesias.es · ------ ")
print(" Teselación hexagonal. Panal de abejas ")
print(" Luis M. Iglesias @luismiglesias 11/01/2024 ")
print("------ · ------ · ------ · ------ · --- Geogebra + Python #pyggb --- · ------ · ------ · ------ · ------")
# Paleta de colores
#paleta_de_colores= ['aqua','azure','blue','cyan','coral','gold','green','grey','lightgrey','magenta','maroon','olive','orange','pink','purple','red','skyblue','violet']
paleta_de_colores= ['aqua','azure','blue','cyan','coral','gold','green','magenta','maroon','olive','orange','pink','purple','red','skyblue','violet']
# Configuración
print(" --> Iniciando la construcción")
#print(" --> Iniciando la construcción:", time.ctime(time.time()))
time.sleep(1)
inf_izq=Point(-5000, -5000,is_visible=False)
inf_der=Point(5000, -5000,is_visible=False)
fondo=Polygon(inf_izq,inf_der,4)
fondo.color='black'
fondo.opacity=0
time.sleep(1)
def teselacion_hexagonal(x_inicio,y_inicio,lado_hexagono,color_teselacion,num_columnas):
distancia_entre_hexagonos=lado_hexagono+(lado_hexagono/2)
apotema_hexagono=math.sqrt(math.pow(lado_hexagono,2)-math.pow(lado_hexagono/2,2))
altura_hexagono=2*apotema_hexagono
print(f" Teselación compuesta por",num_columnas, "x", num_columnas,"=", int(math.pow(num_columnas,2)),"hexágonos regulares de lado", lado_hexagono, "u.")
for i in range(0,num_columnas):
#print(f"i=",i)
#print(f"resto=",i%2)
if i%2==0:
for j in range(0,num_columnas):
punto_aux_1=Point(x_inicio+i*distancia_entre_hexagonos,y_inicio+j*altura_hexagono,is_visible=False)
punto_aux_2=Point(x_inicio+i*distancia_entre_hexagonos+lado_hexagono,y_inicio+j*altura_hexagono,is_visible=False)
hexagono_aux=Polygon(punto_aux_1,punto_aux_2,6)
hexagono_aux.color=color_teselacion
#4
#fondo.color='white'
#hexagono_aux.color='blue'
#5
hexagono_aux.color=random.choice(paleta_de_colores)
hexagono_aux.line_thickness=8
time.sleep(0.001)
else:
for j in range(0,num_columnas):
punto_aux_1=Point(x_inicio+i*distancia_entre_hexagonos,y_inicio+(2*j+1)*altura_hexagono/2,is_visible=False)
punto_aux_2=Point(x_inicio+i*distancia_entre_hexagonos+lado_hexagono,y_inicio+(2*j+1)*altura_hexagono/2,is_visible=False)
hexagono_aux=Polygon(punto_aux_1,punto_aux_2,6)
hexagono_aux.color=color_teselacion
#4
#fondo.color='white'
#hexagono_aux.color='red'
#5
hexagono_aux.color=random.choice(paleta_de_colores)
hexagono_aux.line_thickness=8
time.sleep(0.001)
'''
color_teselacion=random.choice(paleta_de_colores)
teselacion_hexagonal(-10,10,1,color_teselacion,5)
teselacion_hexagonal(10,10,1,color_teselacion,5)
teselacion_hexagonal(10,-10,1,color_teselacion,5)
teselacion_hexagonal(-10,-10,1,color_teselacion,5)
teselacion_hexagonal(0,0,1,color_teselacion,5)
'''
'''
#1
color_teselacion='purple'
teselacion_hexagonal(0,0,1,color_teselacion,5)
'''
'''
#2 zoom-
color_teselacion='blue'
teselacion_hexagonal(-8,-3,2,color_teselacion,5)
'''
'''
#3 y dentro #4 y #5
fondo.opacity=1
color_teselacion='gold'
teselacion_hexagonal(5,5,1,color_teselacion,8)
'''
#'''
#6 va con 5 dentro
fondo.color='black'
fondo.opacity=1
color_teselacion=random.choice(paleta_de_colores)
teselacion_hexagonal(-10,10,0.8,color_teselacion,6)
teselacion_hexagonal(10,10,0.8,color_teselacion,6)
teselacion_hexagonal(10,-10,0.8,color_teselacion,6)
teselacion_hexagonal(-10,-10,0.8,color_teselacion,6)
teselacion_hexagonal(0,0,0.8,color_teselacion,6)
#'''
print(" --> Construcción finalizada")
print("------ · ------ · ------ · ------ · --- Geogebra + Python #pyggb --- · ------ · ------ · ------ · ------")
print("")
print("")
'''
# ------ · ------ · --- Geogebra + Python --- · ------ · ------ #