Saltar a contenido

Logo web por rotación

PyGgb es un entorno en línea en el que se puede programar en Python y ver el resultado gráfico en GeoGebra comunicándose a través de su API. Todavía en versión beta, se trata de una idea interesante porque el lenguaje de GeoGebra es muy limitado y la generación de algunas animaciones se vuelve muy compleja.

Desgraciadamente no existe una ayuda clara y aclararse con los comandos es complejo.

Puedes encontrar más información aquí.

He querido empezar a experimentar con este entorno con algo muy sencillo como es el logo por rotación de este website.

Pincha aquí para ver el código en el entorno de PyGgb: Enlace

logo en pyggb

Código

Text Only
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import time
import math


P1 = Point(0, 0)

# Figure initiale
A = Point(0.25, 2.53)
B = Point(1.42, 2.13)
C = Point(1, 0.95)
D = Point(-0.44, 0.65)
# Les points sont mobiles dans le cadre Ggb et la figure totalement dynamique


E = Point(0.17, 2.56)
F = Point(-0.26, 1.4)
G = Point(-0.61, 1.97)

puntos_cuadrilatero = [A,B,C,D]
figure1 = Polygon(puntos_cuadrilatero, color = "black", opacity=1)

puntos_triangulo=[E,F,G]
figure2 = Polygon(puntos_triangulo, color = "black", opacity=1)

for punto in puntos_cuadrilatero:
    punto.color="black"
    punto.is_visible=False

for punto in puntos_triangulo:
    punto.color="black"
    punto.is_visible=False





def rotar_puntos(lista_puntos, angulo, origen):
    lista_rotada = []  # Lista donde se guardarán los puntos rotados

    for punto in lista_puntos:
        # Calcula la rotación del punto en torno al origen
        punto_rotado = Rotate(punto, angulo, origen)
        # Añadir el punto rotado a la lista
        punto_rotado.is_visible = False
        lista_rotada.append(punto_rotado)
    # Crear el polígono con los puntos rotados
    return Polygon(lista_rotada, color="black", opacity=1)



for i in range(1,6):
    rotar_puntos(puntos_cuadrilatero ,i*2*math.pi/6, P1)
    rotar_puntos(puntos_triangulo ,i*2*math.pi/6, P1)