Origen
Carpetas de Proyectos
Recursos de Profesores
Recursos de Estudiantes
En INGLÉS
¿Cómo hago?
Lectura
Foro MW
Mapa del Sitio
Búsqueda
Equipo

polígonos 1 2 3 4 5 6 7 8 9
Polígonos 8
Pruébalo
29 KB


Meta:   Dibuja un círculo dentro de un polígono.


Screenshot


Vocabulario:   make, colorunder

Código
Mapa del Proyecto

to polygon
t1, pu
t2, pu
setc whatcolor
setpensize howthick
repeat 1 + #sides [
t1, fd howbig
t2,
setpos t1's "pos
if touching? "t2 "t1 [pd]
t1, bk howbig rt 360 / #sides
]
end

to circle-in-a-polygon
polygon
make "count 0
t1, pu seth 0
rt 180 / #sides
repeat howbig [
fd 1
if colorunder = whatcolor [make "radius :count]
make "count :count + 1
]
bk howbig
setc circolor
setpensize 2
repeat 360 [pu fd :radius rt 90 pd fd 1 bk 1 lt 90 pu bk :radius rt 1]
end

to reset
ask [t1 t2] [home seth 0]
cg
end



Notas

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.

  1. 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.  

  2. 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.

  3. Make "count :count + 1 incrementa el valor de count en uno cada vez que t1 da un paso.

  4. 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.

  5. 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.  




¿Qué pasa si?
Intenta diferentes valores para howbig y howthick.


Desafío
¿Puedes usar el valor de radius en lugar de howbig para inscribir un polígono más pequeño dentro del círculo?




© copyright 2001 - 2008  OpenWorld Learning.   All rights reserved.