Skip to main content

Zoom infinito. Círculos y polígonos

Herramientas avanzadas de GeoGebra. Comandos

En este artículo veremos cómo utilizar comandos de GeoGebra para crear un efecto de zoom infinito a partir de cualquier figura. Por ejemplo, un círculo o un polígono estrellado.

En este caso, aprovecharemos para aprender a combinar algunas herramientas avanzadas de GeoGebra: comandos y guiones.

La siguiente construcción se ha realizado siguiendo las indicaciones que damos a continuación, e incluyendo después algunas opciones de configuración. Utiliza las opciones para explorar diferentes posibilidades de construcción.

 

¿Cómo realizar estas construcciones?

  • Este efecto de zoom infinito se basa en una figura inicial, por ejemplo un círculo o un polígono, y varias figuras más obtenidas mediante homotecias suyas.
  • Ese número de figuras lo guardaremos en una variable denominada totalFiguras.
  • Aplicaremos repetidamente un factor de zoom, que denominamos factorZoom, por ejemplo, factorZoom=0.8.
  • Para ello, bastará ir elevándolo a exponentes correlativos. Para un círculo centrado en un punto denominado CentroFiguras, introduciríamos

FigInicial=Circunferencia(CentroFiguras, 5)
totalFiguras=26
exponentes = Secuencia(t, t, 0, totalFiguras - 1)

  • A partir de esta figura inicial y la lista de exponentes para construir las homotecias, podemos construir la lista de figuras, que denominaremos Figuras.
  • Para crear el efecto óptico de zoom infinito, iremos aplicando una homotecia a todas las figuras, de acuerdo con un deslizador entre 0 y 1 denominado tiempo de manera que, para tiempo=1, las figuras coincidan con la anterior en la lista de figuras correspondientes a tiempo=0.
  • Cambiando adecuadamente los colores de esas figuras al llegar a tiempo=1, podemos volver a establecer tiempo=0, y continuar la animación. Este cambio de colores irá asociado al código que se ejecute cuando el deslizador llegue a 1. Para ello, estableceremos que su animación sea incrementando (solo una vez).

Figuras = Zip(Homotecia(FigInicial, factorZoom^(t - tiempo), CentroFiguras), t, exponentes)

 Ejemplo:

  • La construcción inicial de esta guía es algo complicada, porque incluye muchas opciones.
  • Pero, si quieres, puedes descargar el ejemplo que mostramos aquí, que es más sencillo, para analizar su protocolo de construcción.
  • También puedes continuar con las explicaciones paso a paso que ofrecemos a continuación.  

Pasos para realizar la construcción

{tab title=»Colorear los elementos» class=»green»}

Para poder establecer de manera independiente el color de cada figura, necesitamos definirlas como elementos independientes y ocultar: la lista Figuras, la figura inicial y el centro. El comando Ejecuta nos ahorrará escribir muchos comandos. Para ello, le pasamos la lista de comandos que deben ejecutarse. Hay que recordar que los comandos deben escribirse en inglés. Por ello, para elegir los elementos de la lista de figuras Figuras, escribiremos "Fig"+t+"=Element(Fig,"+t+")", donde sacamos el índice t de la cadena de texto, para que pueda irse modificando según avanzamos en la secuencia de comandos.

Ejecuta(Secuencia(«Fig»+t+»=Element(Figuras,»+t+»)»,t,1,totalFiguras))

Para colorearlos, definiremos una lista con colores aleatorios, que será la que modifiquemos cuando tiempo alcance el valor 1. Los elementos de la lista serán los porcentajes de rojo, verde y azul, respectivamente. Si queremos, podemos incluir la opacidad. Usando el comando CopiaObjetoLibre, conseguiremos que esos valores aleatorios queden fijos.

colores=CopiaObjetoLibre(Secuencia(
   {AleatorioEntre(0,255)/255,
    AleatorioEntre(0,255)/255,
    AleatorioEntre(0,255)/255}
   ,t,1,totalFiguras))

{tab title=»Establecer colores» class=»orange»}

Al igual que antes, la forma más cómoda de establecer los colores es utilizando el comando Ejecuta, combinado con el comando ColorDinámico, que en inglés se denomina SetDynamicColor. Así, introducimos en la barra de entrada:

Ejecuta(Secuencia(
    «SetDynamicColor(Fig»+t+»,
      Element(colores,»+t+»,1),
      Element(colores,»+t+»,2),
      Element(colores,»+t+»,3),1)»
    ,t,1,totalFiguras))

Si queremos quitar el grosor, podemos utilizar también un comando

Ejecuta(Secuencia(
   «SetLineThickness(Fig»+t+», 0)»
   ,t,1,totalFiguras))

o bien seleccionar todos y quitar el grosor directamente. También marcamos que no se muestren las etiquetas.

{tab title=»Generando una iteración nueva» class=»red»}

Podemos agregar un efecto de «desvanecimiento» a la primera figura, estableciendo su valor de opacidad (pestaña avanzado) a 1-tiempo. Por último, en el código «Al Actualizar» del deslizador tiempo, incluiremos la línea

Si(tiempo>=1,EjecutaAlClic(btnReinicio))

y definimos un botón llamado btnReinicio, con el código que reinicia el tiempo y establece los nuevos colores

Valor(tiempo,0)
Valor(colores,Encadena(
   Extrae(colores, 2),
   {{AleatorioEntre(0,255)/255,
     AleatorioEntre(0,255)/255,
     AleatorioEntre(0,255)/255}}
   ))
IniciaAnimación(tiempo)

(*) Si copias este código, acuérdate de borrar los saltos de línea.

{/tabs}

 

Como ampliación, podemos hacer que los nuevos colores no se generen aleatoriamente, sino que se repitan cada varios elementos, o incluso que sigan un patrón.

  • En el applet inicial, se incluía la posibilidad de elegir cada cuántos elementos repetir los coloes.

También, utilizando este mismo método, podemos hacer la misma construcción pero basada, por ejemplo, en polígonos.

  • En el applet que se muestra al inicio, se incluía la posibilidad de crear polígonos estrellados.
  • Además, las figuras iniciales no tienen por qué ser estáticas. Podemos hacer que giren o incluso se desplacen.

Por último, podemos hacer que no solo la figura inicial sea la que marque el ángulo de giro, sino que las demás también giren a su vez.

  • Es lo que, en las opciones, se ha marcado como «retorcer».
  • Tan solo hay que tener en cuenta que, tras cada iteración, las figuras deben encajar para que se siga manteniendo el efecto de zoom continuo.

 


¿Has realizado tu propio efecto zoom con algunas figuras? ¡Compártelo con nosotros! 

 


 

Por ejemplo, aquí tenemos una construcción de Juan Carlos Ponce Campuzano, basada en sus curvas misteriosas


 https://www.geogebra.org/m/rbfedaat

GeoGebra, trucos