En ocasiones anteriores, hemos visto cómo crear un efecto de zoom infinito, y también cómo utilizarlo dentro de construcciones como círculos y polígonos, o fractales como el de Sierpinski.

Una vez que conocemos la técnica, podemos aplicarla a figuras del mismo tipo. En este caso, veamos cómo utilizarlo para crear la curva de Koch (copo de nieve).

¿En qué se basa la construcción?

Elementos de GeoGebra

En conjunto, definimos la animación de la curva de Koch con esta poligonal:

kochVer = Poligonal(Homotecia(koch, 1 + 2animacion^velAnima, PExtremo))

Creando los vértices para la poligonal

Primer paso

Como la curva se genera mediante un proceso iterativo, podemos partir de dos puntos, A y B e ir haciendo divisiones sucesivas del segmento que los une, e incorporando un punto para situar el vértice correspondiente al triángulo equilátero que se añade en cada división. Así, la primera lista de puntos se definiría como

koch0=A + {(0, 0), 1/3 Vector(A, B), 1/3 Vector(A, B) + Rota(1/3 Vector(A, B), 60°), 2/3 Vector(A, B)}

Si queremos incluir el punto final, definiríamos esta primera iteración como

koch1=Añade(koch0, B)
  • Para las siguientes iteraciones, tendríamos que repetir este proceso con nuevos segmentos de nuestra lista.
  • Por ello, puede resultar cómodo definir una herramienta de GeoGebra para generar esos nuevos puntos a partir de dos puntos dados.
  • Para definir la herramienta, bastará con seleccionar la lista anterior koch0 y utilizar la opción de GeoGebra "Crear una nueva herramienta", que podemos denominar iteraKoch. (*) El hecho de no contar el extremo final del segmento es para no repetir ese punto cuando se considere como extremo inicial del siguiente.

Nuevas iteraciones

Con los calculos realizados anteriormente, podemos definir un botón que calcule los puntos cada nueva iteración, que guardaremos en una lista que denominaremos koch.

Para dibujar la curva, bastará con unir los puntos mediante una poligonal. Por ejemplo, kochVer=Poligonal(koch), Para calcular los nuevos puntos:

  • Aplicaremos la herramienta iteraKoch a todos los puntos que ya teníamos calculados. Juntaremos todos los resultados en una única lista, utilizando el comando Encadena.
  • Añadimos el punto final B (como en el caso inicial), con el comando Añade.
  • Por comodidad, podemos guardar primero el número de veces que hay que iterar sobre los elementos, en una variable longKoch=Longitud(koch) .
  • Para calcular el siguiente paso de la curva, bastará con un único comando:
    Valor(koch,Añade(Encadena(
              Secuencia(iteraKoch(Elemento(koch,t),Elemento(koch,t+1))
              ,t,1,longKoch-1)
           ),B))

Posibles modificaciones

  • Notar que, al definirlo así, utilizando el comando Valor, la construcción deja de ser dinámica. Esto es, si modificamos la posición de A o B, la poligonal calculada no se modificará.
  • Si queremos un resultado dinámico, podríamos optar por ir definiendo diferentes listas, que podemos visualizar definiendo las correspondientes poligonales. Por ejemplo,
    koch2=Añade(Encadena(
               Secuencia(iteraKoch(Elemento(koch1,t),Elemento(koch1,t+1)) ,t,1,Longitud(koch1)-1)
               ),B)
    koch3=Añade(Encadena(
               Secuencia(iteraKoch(Elemento(koch2,t),Elemento(koch2,t+1)) ,t,1,Longitud(koch2)-1)
               ),B)
    (*) El principal problema de hacerlo así es que consumimos más recursos del navegador, al tener que guardar más información en memoria, y podemos sobrecargar la capacidad de procesamiento de listas de GeoGebra.


¿Has realizado tu propia construcción con fractales y zoom infinito? ¡Compártela con nosotros!