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 --- · ------ · ------ #