El desafío de este proyecto es encontrar el radio adecuado para que el círculo inscriba al polígono. Esto significa que el círculo quede dibujado dentro del polígono, apenas tocando cada lado en el punto medio entre sus vértices.
Utilizamos t1 como la tortuga exploradora - apunta hacia un lado del polígono (a medio camino entre dos vértices) luego se mueve hacia delante un píxel a la vez con su lápiz arriba, revisando hasta que el color debajo de ella empate con el color fijado en el control
whatcolor. Esto significa que la tortuga ha alcanzado el lado del polígono. Mientras la tortuga se mueve, cuenta sus pasos. Cuando el color que tiene debajo es con el color que está buscando, fija el valor de la variable
radius al número de pasos que ha dado hasta ese punto. Este será el radio del círculo inscrito.
La tortuga exploradora seguirá andando un poco más hasta llegar a la distancia
howbig, pero esto no alterará el valor de
radius.
- Podemos apuntar la tortuga t1 hacia el punto medio de un lado, justo donde deseamos que el círculo lo toque, si la tortuga gira la mitad del ángulo que gira en el procedimiento polygon. En el procedimiento polygon, hemos estado usando el comando rt 360 / #sides para girar la tortuga t1. En el procedimiento circle-in-a-polygon, rt 180 / #sides gira la tortuga t1 la mitad del ángulo que gira en el procedimiento polygon, ya que 180 es la mitad de 360.
- Make "count 0 define una nueva variable llamada count y le da el valor de 0. La variable count será usada para contar el número de pasos que da t1 hasta que llegue al lado del polígono. Este valor será el radio del círculo inscrito.
- Make "count :count + 1 incrementa el valor de count en uno cada vez que t1 da un paso.
- if colorunder = whatcolor [make "radius :count] define una nueva variable, radius, y le da el valor de count justo en el punto en que t1 pasa sobre el color que indica el control whatcolor.
- La tortuga t1 dibuja un círculo punto por punto, usa el valor de radius como el radio del círculo. El círculo inscrito debe tan sólo tocar el lado del polígono en la mitad de cada lado del polígono.