La espiral de Ulam

[color=#999999][color=#999999]Esta actividad pertenece al [i]libro de GeoGebra [/i][url=https://www.geogebra.org/m/fwpemasd]La fábrica de teselados[/url].[/color][br][/color][br]Cada vez que se usa el comando Traslada de GeoGebra, se crea el nuevo objeto resultante. Después de muchas traslaciones, puede llegar un momento en que GeoGebra la velocidad de ejecución sea demasiado lenta. Incluso puede que GeoGebra "pete", especialmente al intentar invertir el teselado.[br][br]Para evitar este inconveniente, podemos sustituir todas esas traslaciones por un solo objeto trasladado que deje su [b]rastro [/b]de color allá por donde pase. Debemos tener en cuenta que el objetivo de nuestra fábrica de teselados es una imagen del mosaico creado. Y una imagen es algo estático, no dinámico, por lo que no necesitamos que todos los objetos trasladados varíen al unísono al variar la forma del azulejo fundamental. Cada vez que queramos cambiar de azulejo, reiniciamos la fábrica y listo.[br][br]Además, de este modo, si bien la velocidad de ejecución depende de la complejidad del azulejo fundamental, el ritmo se mantiene constante, no decrece con el tiempo, pues no se crea ningún nuevo objeto, siempre es la misma copia trasladada del azulejo fundamental, que se va moviendo por el plano mientras deja rastro de su paso.[br][br]Para acelerar todavía más el proceso, alguien puede pensar que, igualmente, se podría probar con sustituir la construcción del azulejo fundamental por una imagen del mismo. Pero esta idea no sirve, pues las imágenes insertadas en la vista gráfica de GeoGebra no tienen la propiedad de dejar rastro.[br][br]Ahora solo queda idear un método para colocar las diferentes copias del azulejo fundamental. Lo más natural parece ser obrar a partir de la posición original, dando vueltas en espiral alrededor de ella. Existe una espiral famosa, la [url=https://es.wikipedia.org/wiki/Espiral_de_Ulam]espiral de Ulam[/url], que hace exactamente lo que deseamos. Esta espiral es conocida por su capacidad para resaltar ciertos patrones en la distribución de números primos (cuyas posiciones están coloreadas en rojo en la siguiente construcción), pero aquí la usaremos simplemente para dirigir las traslaciones del azulejo fundamental. Después de la construcción, puedes ver el guion de GeoGebra que sigue la espiral. Es exactamente el mismo, sin cambiar una coma, que usaremos en nuestra fábrica. Atiende, en particular, a las variables ulamX y ulamY, pues formarán parte del vector de traslación [color=#cc0000]t = ulamX u + ulamY v - Centro[/color].[br][br]Naturalmente, como en toda fábrica, a veces sale alguna copia defectuosa. En nuestra fábrica, puede que en algunas ocasiones GeoGebra vaya "demasiado deprisa" y no le dé tiempo a que el objeto trasladado imprima su rastro en la vista gráfica. [i]Bueno, nadie es perfecto[/i] (siempre se puede disminuir la velocidad del deslizador "anima").
[b][color=#999999]GUION DEL DESLIZADOR "anima"[/color][/b][br][br][color=#cc0000]# Se recogen los valores actuales de ulamC, ulamX y ulamY[/color][br]Valor(uC, ulamC)[br]Valor(uX, ulamX)[br]Valor(uY, ulamY)[br][br][color=#cc0000]# Se actualiza el número de "vueltas cuadradas" ulamC[/color][br]Valor(ulamC, Si(uX ≟ uC ∧ uY ≟ -uC, uC + 1, uC))[br][color=#cc0000][br]# Se actualiza el valor de ulamX[/color][br]Valor(ulamX, Si(uY ≟ uC ∧ uX > -uC, uX - 1, uY ≟ -uC ∧ uX < uC+1, uX + 1, uX))[br][br][color=#cc0000]# Se actualiza el valor de ulamY[/color][br]Valor(ulamY, Si(uX ≟ uC ∧ abs(uY ) < uC, uY + 1, uX ≟ -uC ∧ uY > -uC, uY - 1, uY))[br][br][color=#cc0000]# Pasa al siguiente número ulamN[/color][br]Valor(ulamN, ulamN + 1)[br][br][br][color=#999999]Autor de la actividad y construcción GeoGebra: [url=https://www.geogebra.org/u/rafael]Rafael Losada[/url].[/color]

Information: La espiral de Ulam