2do paso: dibujar un polígono (final)

Después del verdadero "tour de force" que significó nuestro análisis geométrico más reciente, vamos a volver al terreno de la programación. Debemos conseguir que Pier pueda dibujar el ya casi "mítico" pentágono regular.
Sin más prolegómenos —palabreja interesante—, despertemos a nuestro personaje porque volvemos a la acción…

[vamos a] dibujar un pentágono regular

Con nuestra experiencia del triángulo equilátero todavía presente, lo que cualquiera haría (yo inclusive) es abrir el proyecto del cuadrado, guardarlo con otro nombre, buscar el script y cambiar un 4 por un 5, cambiar un 90 por un 72 y, casi entre bostezos, esperar a ver con que gracia Pier consigue dibujar el pentágono.
1er pentágono
¿Consigue dibujar el pentágono dije?
La imagen a nuestra derecha muestra el resultado obtenido cuando sólo cambiamos los 2 valores numéricos mencionados, que se corresponden con la cantidad de lados y con el valor del ángulo de giro.
¿Decepcionado yo?
De ninguna manera. Es evidente que Pier está dibujando un pentágono regular con todas las de la ley.
¿Conforme yo?
De ninguna manera. Es evidente que el pentágono aparece recortado en su parte inferior… el dibujo de Pier se salió del escenario por cumplir con nuestras instrucciones al pie de la letra (no es un defecto, es su virtud… pobre). Por otro lado —y aunque es un detalle menor— está repitiendo el color azul (133) en dos de los lados.
¿Serás capaz de encontrar por tu cuenta la manera de cambiar nuestro algoritmo para solucionar estos problemas? Date un tiempo para pensarlo, yo mientras tanto pongo al fuego la pava porque me dieron ganas de tomarme unos mates amargos, "cimarrones" que les dicen (como buen gaucho de las pampas que soy). ¡Ahijuna canejo…!

Afinando el programa [cuestión 1]

Agrandar el escenario no es una opción… tiene su tamaño de 480 x 360 pasos y dentro del mismo deberemos manejarnos.
"Pier puede empezar a dibujar un poco más arriba", podrías sugerir vos. Y es correcto: poniendo como condición inicial ir a x:(-100) y:(150)   —implica "subir" el punto de inicio en 50 pasos— nuestro pentágono regular quedará prolijamente dibujado… probalo y después seguimos.
Si el objetivo de nuestro Tutorial fuese que Pier sea capaz de dibujar, siguiendo nuestras instrucciones, un triángulo, un cuadrado y un pentágono, todo OK. Pero siempre quisimos más que esto. ¡Queremos que Pier dibuje polígonos regulares de 10, 100, de 1000 lados si hiciese falta!  ¡El cielo es el límite!
Luego de esta innecesariamente encedida arenga, pongámonos a pensar: ¿alcanzará con esta solución de mover a Pier más arriba cuando quiera dibujar un octógono? ¿o un decágono?. Tenés la tabla de la página anterior para auxiliarte: intentá probar y ver si respondés esta pregunta.
La "dura" realidad es que no alcanza con mover a Pier hacia arriba. Y es más, aunque le indiquemos que vaya por ej. a y=175 el mismo entorno (de Scratch estoy hablando) nos imposibilitará que Pier pueda tomar una ordenada mayor que 162 pasos, y esto no nos alcanza ni para dibujar un hexágono dentro del escenario… ni hablar de un polígono de más lados.

Pero si uno para y piensa ("es tan fácil decirlo"), surge a la luz una cuestión evidente que estamos dejando pasar por alto: si dejamos el tamaño de los lados fijo (en 200 pasos) a medida que aumentemos la cantidad de lados nuestros polígonos regulares resultarán con tamaños progresivamente mayores.

Solución

Habrá que "adaptar" la cantidad de pasos que se mueve Pier al dibujar los polígonos de acuerdo a la cantidad de lados de los mismos, achicándola a medida que esta cantidad aumente. Y si queremos que quede horizontalmente centrado también deberemos adaptar el punto de inicio de acuerdo al nuevo tamaño de lado propuesto.
Para ir a lo concreto de nuestro pentagonal problema, voy a proponer cambiar el tamaño de los lados de nuestro pentágono regular de 200 a 160 pasos, y el punto de inicio deberá cambiarse entonces a un nuevo valor de (x= -80; y= 100), de manera que el polígono quede centrado horizontalmente. Funciona.

Afinando el programa [cuestión 2]

Repetición del color azul. ¡uhm…! Hablamos brevemente sobre el tema de asignación de colores al lápiz aquí, y mencionamos algo sobre su patrón de repetición (sumando o restando múltiplos de 200 obtenemos un mismo color) .

Si bien no fue fijada nunca una meta o regla estricta a seguir a la hora de generar el cambio de colores, yo voy a seguir la siguiente: voy a "saltar" dentro del espectro de colores y elegirlos de manera equiespaciada (si entendiste esto, ¡explicámelo!).

Quizás con esta gráfica pueda clarificar mis inentendibles palabras:
espectro
BREVE (?) EXPLICACIÓN: estamos viendo el espectro repetitivo de colores y su vínculo con los números que (según la metodología de Scratch) sirven para identificarlos.
Deliberadamente estoy mostrando casi 2 ciclos de "ese arco iris", pero enmarcando una ventana de trabajo de 200 —desde 133 (azul) hasta 333 (de nuevo el mismo azul)—, que es la que pretendo usar tanto para el pentágono regular, como para todos los polígonos regulares que sigamos trabajando de aquí en adelante.
Cuando hablo de "saltar" dentro del espectro de forma equiespaciada significa que quiero, a partir del azul inicial, ir buscando los subsiguientes colores dando siempre un mismo salto en el valor del cambio (lo que por otra parte me será útil para nuestro algoritmo), pero también buscando "barrer" todo el espectro a nuestra disposición (las flechitas de arriba están indicando esto… hay 5 porque están pensadas para el pentágono).
¿De cuánto será el salto en cuestión? Pensemos: si en 5 saltos tengo que recorrer una "distancia" de 200, cada salto debe cubrir 200 / 5= 40 … por lo tanto nuestra instrucción dentro del algoritmo nos quedará cambiar color del lápiz por (40).
Antes de pasarle el nuevo programa en limpio a Pier (que a esta altura ya ni intenta fingir que le interesa palabra de lo que estoy contando) , una cosita más. ¿Te acordás que en el cuadrado usamos cambiar color del lápiz por (50)? No fue casualidad, yo ya tenía esto en mente… fijate si podés imaginar los cuatro saltos de 50 en nuestra imagen superior… ideal para un cuadrado.

sucesión de colores

  • [133]—azul—
  • [173]—casi magenta—
  • [213]—casi naranja—
  • [253]—casi verde—
  • [293]—casi turquesa—
Esta será la sucesión de colores; podés verificarlo en nuestra imagen, y después al correr el programa.

Pasemos todo en limpio

En un esfuerzo de síntesis, podemos decir que si sólo cambiamos 2 valores de nuestro algoritmo base (el del cuadrado) llegamos a un nuevo algoritmo que nos permite dibujar un pentágono regular, pero de manera "imperfecta".
Pensamos acerca de las causas de esta situación, de como corregirlas, e incluso "con una mirada a futuro" colegimos que el tamaño de los lados debe acomodarse a cada polígono regular, lo mismo que las coordenadas de inicio y los saltos en el color. Este afinamiento en el programa requirió del cambio de 3 valores más, elevando la cuenta a 5 valores numéricos a ser cambiados. En un segundo volvemos con esto.
Como es habitual, a tu derecha ya tenés como queda nuestro programita para el pentágono, chequeá si te quedó algún cambio por hacer y después guardalo.
algoritmo pentagono

Felicitate: terminamos nuestro 2do paso de este Tutorial (¡avisale a Pier, para que él también festeje!)

PARA VER

Podés visitar esta página dentro del sitio de Scratch para ver esta parte del proyecto en acción, e incluso descargarlo (si estás suscripto como usuario).

Es hora de jugar

Si entendiste lo que tratamos en esta 2 últimas páginas, tenés todos los elementos para "fabricar" nuevos algoritmos/programas para que Pier dibuje otros polígonos… ponelo (OK, pónlo) a dibujar que a él le encanta — se va a llevar mejor con vos que conmigo que le doy la lata—.
Recordá que vas a tener que cambiar 5 valores: los vas a tener que calcular de igual manera que hicimos para el pentágono.
Sugerencias: yo seguiría con el hexágono, luego el octógono, el decágono y el dodecágono. Los de mayor cantidad de lados los dejaría para más adelante, pero es tu decisión.

Una mirada al futuro

Aprovechá y jugá con Pier todo lo que puedas, realmente se lo tienen merecido (y así el que va a dormir por un tiempo seré yo).
Ya sabés que al terminar cada paso me gusta anticipar algo de lo que viene. Si te pusiste a hacer la tarea de generar los algoritmos que te sugerí, seguramente descubriste que hay muchos cálculos por hacer, y que te van quedando muchos proyectos Scratch que sólo servirán para un polígono en particular.
¿Existirá alguna manera de que con un sólo programa podamos indicarle a Pier que dibuje el polígono regular que querramos?
Dicho de otra manera ¿se podrá llegar a un algoritmo genérico?
La meta del paso siguiente —el 3ro— será generar ese algoritmo, con el cual conseguiremos lograr otra cosa importante: con solo cambiar un valor numérico podremos indicarle a Pier que dibuje el polígono regular que se nos ocurra… Increíble.
Disfruten de su juego, pero eso sí, griten en voz baja plis… Nos estamos viendo.
Última actualización: Febrero 24, 2014

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger