8. Diseños geométricos: Rotación de segmentos

Descripción

Finalmente, en este vídeo muestro cómo la rotación de segmentos puede generar patrones geométricos interesantes. Es ideal para discutir temas como la rotación y la simetría en el aula.

Vídeo

Ventana PyGgb

Código fuente Python

# print(" ------ · MatemáTICas: 1,1,2,3,5,8,13,... https://matematicas11235813.luismiglesias.es · ------ ") print(" Diseños geométricos. Rotación de segmentos. ") print(" Luis M. Iglesias @luismiglesias 18/01/2024 ") print("------ · ------ · ------ · ------ · --- Geogebra + Python #pyggb --- · ------ · ------ · ------ · ------") # # Librerías import math import time import random # Configuración origen_coord=Point(0, 0,is_visible=False) fondo=Circle(origen_coord, 50000) fondo.color='black' fondo.opacity=0 grosor=4 time.sleep(2) fondo.opacity=1 print(" --> Iniciando la construcción") # 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= ['blue','gold','green','magenta','olive','orange','purple','red','violet'] # Segmento def segmento_parametricas(x1,y1,x2,y2,n,color): segmento=[] for i in range(n): t = i / (n - 1) punto_segmento = Point(x1 + t*(x2 - x1), y1 + t*(y2 - y1)) punto_segmento.color = color segmento.append(punto_segmento) time.sleep(2) return segmento def rotar_segmento(lista_puntos_segmento,alfa,color): #print("Voy rotando el segmento con ángulo: ", alfa) for j in range(0,len(lista_puntos_segmento)): punto = lista_puntos_segmento[j] xprima = punto.x * math.cos(alfa) - punto.y * math.sin(alfa) yprima = punto.x * math.sin(alfa) + punto.y * math.cos(alfa) punto_rotado = Point(xprima, yprima) punto_rotado.color=color #print("Por aquí giro: ", alfa, " - Punto_rotado: ", xprima, ",",yprima) time.sleep(0.005) n=14 lista_puntos_segmento1 = segmento_parametricas(0,0,2,0,n,'gold') #print(lista_puntos_segmento1) angulo_rotacion=0.15708 while angulo_rotacion < 2*math.pi: rotar_segmento(lista_puntos_segmento1,angulo_rotacion,'gold') angulo_rotacion = angulo_rotacion + 0.15708 ''' n=10 lista_puntos_segmento2 = segmento_parametricas(2.5,0,4,0,n,'gold') #print(lista_puntos_segmento2) angulo_rotacion = 0.31416 while angulo_rotacion < 2*math.pi: rotar_segmento(lista_puntos_segmento2,angulo_rotacion,'gold') angulo_rotacion = angulo_rotacion + 0.31416 ''' ''' n=6 lista_puntos_segmento3 = segmento_parametricas(4.5,0,5.5,0,n,'gold') print(lista_puntos_segmento3) angulo_rotacion = 0.15708 while angulo_rotacion < 2*math.pi: rotar_segmento(lista_puntos_segmento3,angulo_rotacion,'gold') angulo_rotacion = angulo_rotacion + 0.15708 n=4 lista_puntos_segmento4 = segmento_parametricas(6,0,6.5,0,n,'gold') print(lista_puntos_segmento4) angulo_rotacion = 0.31416 while angulo_rotacion < 2*math.pi: rotar_segmento(lista_puntos_segmento4,angulo_rotacion,'gold') angulo_rotacion = angulo_rotacion + 0.31416 grosor = 8 colorcirculo = 'white' centro = Point(0,0,is_visible=False) Circle(centro,2,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,2.5,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,4.0,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,4.5,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,5.5,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,6.0,line_thickness=grosor,color=colorcirculo) time.sleep(0.3) Circle(centro,6.5,line_thickness=grosor,color=colorcirculo) ''' print(" --> Construcción finalizada") # ------ · ------ · --- Geogebra + Python --- · ------ · ------ #