[list][*]La construcción se basa en varias imágenes a las que se les aplica una [b]homotecia [/b]cuyo [b]factor de escala[/b] se va incrementando.[/*][*]En cada imagen hay una parte vacía, en la que estará otra de las imágenes de la composición (a su vez, con un factor de escala menor).[/*][*]Una vez que el factor de escala "zoom" de la imagen hace que no quede nada de la imagen en pantalla (solo se vería esa parte vacía), podemos cambiar su factor de escala por uno muy pequeño, para reutilizarla y que pase a ser la imagen interior de otra de la composición.[/*][*]Así, tan solo es necesario utilizar un número reducido de imágenes.[/*][/list]
[list][*]Elegimos el número máximo de imágenes que se mostrarán en la construcción. En este ejemplo, había 6. Pueden ser iguales o diferentes, pero siempre deben tener esa zona vacía en común.[/*][*]Para programar en GeoGebra, lo más cómodo es controlar el factor de escala mediante deslizadores.[/*][*]Como serán necesarios varios deslizadores, lo recomendable es utilizar una [b][url=https://wiki.geogebra.org/es/Listas]lista[/url][/b] con los valores de esos [b]deslizadores[/b]. A su vez, con un único [b]deslizador general[/b], controlaremos los valores de esta lista de deslizadores.[/*][*]Podemos situar el centro de la [url=https://wiki.geogebra.org/es/Comando_Homotecia]homotecia[/url] en cualquier zona de la parte vacía de las imágenes.[/*][*]Elegiremos el [b]valor máximo[/b] de las homotecias de forma que nos aseguremos que, con ese factor de escala, en la vista gráfica solo se muestra el hueco de las imágenes.[/*][/list]
[list][*]El [b]deslizador general[/b] valdrá entre 0 y 1, indicando el porcentaje del proceso completo de la animación que estamos visualizando.[/*][*]Los deslizadores de la [b]lista[/b] valdrán entre 0 y 1, indicando qué porcentaje del zoom máximo se va a aplicar a cada imagen. Si hay [code]n imágenes[/code], será una lista de n números entre 0 y 1.[/*][*]Elegiremos sus valores de forma que los instantes en que valen 0 se distribuyan uniformemente a lo largo del proceso completo de animación. Utilizando el comando [url=https://wiki.geogebra.org/es/Comando_Secuencia]secuencia[/url], establecemos los momentos de inicio como[quote][code]inicioDeslizadores = Secuencia(t / n, t, 0, n - 1)[/code][/quote]Con esto, utilizando el comando [url=https://wiki.geogebra.org/es/Comando_Zip]Zip[/url], podemos establecer el valor de cada deslizador de la lista, para que vaya avanzando entre 0 y 1 según progresa el [code]deslizadorGeneral[/code]. Para ello, lo combinaremos con el comando [url=https://wiki.geogebra.org/es/Comando_Si]Si(condición, entonces, otro_caso)[/url].[br][quote][code]deslizadores = Zip(Si(deslizadorGeneral ≥ in, deslizadorGeneral - in, 1 + deslizadorGeneral - in), in, inicioDeslizadores)[/code][/quote][/*][/list][br]
[list][*]Utilizando la lista de deslizadores, podemos calcular el factor de homotecia, usando también una lista.[/*][*]No siempre es conveniente que la velocidad de crecimiento del zoom sea lineal. [/*][*]Podemos modificarlo mediante una función exponencial, elevando el valor del deslizador a una constante [code]crecimiento[/code]. Esto ralentizará la velocidad del zoom cuando la figura es pequeña,[/*][*][color=#333333]Con el comando [url=https://wiki.geogebra.org/es/Comando_Zip]Zip[/url], [br][quote][code]valorZoom = Zip(maxZoom*d^crecimiento, d, deslizadores)[/code][/quote][/color][/*][*]Por último, si tenemos las imágenes iniciales en una lista denominada Imagenes, podemos calcular las imágenes de la animación, haciendo la homotecia de centro el punto elegido, denominado [code]Inicio[/code], y los valores para el zoom calculados [color=#333333]previamente:[br][/color][quote][color=#333333][code]imagenesMostradas = Zip(Homotecia(im, zoom, Inicio), zoom, valorZoom, im, Imagenes)[/code][/color][/quote][/*][/list][br][br]
Para el applet del ejemplo, se han utilizado estas [url=https://emtic.educarex.es/recursos/usa/banco-de-imagenes]imágenes[/url], del [url=https://emtic.educarex.es/creasite]proyecto CREA[/url], de la Junta de Extremadura (España). (Licencia CC-BY-SA)