Meta: Circunscribe un círculo a un polígono.
to polygon
t1, pu
t2, pu
setc whatcolor
setpensize howthick
repeat 1 + #sides [
t1, fd howbig
t2,
setpos ask "t1 [pos]
if touching? "t2 "t1 [pd]
t1, bk howbig rt 360 / #sides
]
end
to circle-a-polygon
polygon
t1, pu seth 0
setc circolor
setpensize 2
repeat 360 [pu fd howbig rt 90 pd fd 1 bk 1 lt 90 pu bk howbig rt 1]
end
to reset
ask [t1 t2] [home seth 0]
cg
end
Notas Este proyecto dibuja un círculo cuyo radio es howbig. El radio igual a la distancia desde el punto central a cada vértice del polígono. Si se dibuja el polígono con una línea fina, el círculo parecerá circunscribirlo. (Esto significa que el círculo rodea al polígono, tocando el punto de cada vértice). Si las líneas son gruesas, el círculo pasará por el medio de cada grueso vértice.
- Añade un control extra y nómbralo circolor para que puedas dibujar al polígono y al círculo con diferentes colores.
- En el procedimiento circle-a-polygon, el método para dibujar un círculo es construirlo punto por punto desde el punto central. La tortuga empieza en el punto central y se mueve al borde del círculo con su lápiz arriba, luego gira 90 grados hacia la derecha, dibuja un segmento de línea que es tan solo de un píxel de largo, gira a la izquierda 90 grados, sube su lápiz arriba nuevamente, retrocede al punto central, y gira un grado. Ella repite el proceso 360 veces, dibujando 360 segmentos de línea pequeñitos para formar un círculo. Si el radio del círculo es grande, el círculo aparecerá punteado en lugar de parecer sólido. (Si se pone demasiado alto el control howbig, algunas figuras dibujadas por el procedimiento puede doblarse y aparecer parcialmente en el lado opuesto de la página en lugar de formar polígonos regulares, y la tortuga no podrá circunscribir la figura. Fija el control howbig en un valor suficientemente bajo para dibujar un polígono regular).
¿Qué pasa si?
Intenta diferentes valores para howbig y howthick. (¿Qué pasa con el círculo si el polígono sobrepasa el borde de la página del proyecto? ¿Cuál es el máximo valor para howbig que calza?)
Desafío
¿Puedes corregir el procedimiento circle-a-polygon para que el círculo sea dibujado con menos segmentos de línea (quizá 180 o 90 en lugar de 360)? ¿Qué más necesitas ajustar a parte del comando repeat?
|