{"id":155,"date":"2009-02-04T12:05:02","date_gmt":"2009-02-04T10:05:02","guid":{"rendered":"https:\/\/blogs.ua.es\/glac\/?p=155"},"modified":"2009-02-20T11:16:56","modified_gmt":"2009-02-20T09:16:56","slug":"ejercicios-processing-1","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/glac\/2009\/02\/04\/ejercicios-processing-1\/","title":{"rendered":"Ejercicios Processing #1"},"content":{"rendered":"<p><strong>Actualizaci\u00f3n: Teneis los ejercicios <a href=\"http:\/\/dhaslock.googlepages.com\/Dia012009_01_27.rar\">haciendo click aqu\u00ed (d\u00eda 1)<\/a> y <a href=\"http:\/\/dhaslock.googlepages.com\/Dia022009_02_03.rar\">aqu\u00ed (d\u00eda 2)<\/a><\/strong><\/p>\n<p>De momento, y a falta de otros canales m\u00e1s eficientes, os pongo aqu\u00ed el c\u00f3digo de los ejercicios que hemos visto en las dos primeras clases de processing (27 de enero y 3 de febrero).<\/p>\n<p><strong><span style=\"text-decoration: underline\">Martes 27 de enero<\/span><\/strong><\/p>\n<p>1. una elipse sigue al rat\u00f3n y va cambiando de tama\u00f1o entre un valor m\u00ednimo y un m\u00e1ximo:<br \/>\n<!--more--><\/p>\n<p><span style=\"color: #800080\">\/\/ Ceclec_01<br \/>\n\/\/ (c)avr &#8211; ene.2009<br \/>\n\/\/ C\u00edrculo latente vinculado al rat\u00f3n<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Declaraci\u00f3n de variables globales del programa<br \/>\nfloat dMin;         \/\/ tama\u00f1o m\u00ednimo del c\u00edrculo<br \/>\nfloat dMax;         \/\/ tama\u00f1o m\u00e1ximo del c\u00edrculo<br \/>\nfloat d;            \/\/ tama\u00f1o &#8216;actual&#8217; del c\u00edrculo<br \/>\nboolean crecer;     \/\/ indica si el c\u00edrculo ha de aumentar o disminuir<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Inicializaci\u00f3n de variables y par\u00e1metros globales<br \/>\nvoid setup() {<br \/>\nsize(300, 300);      \/\/ tama\u00f1o del sketch<br \/>\nsmooth();            \/\/ activa el suavizado<br \/>\nstroke(0);           \/\/ color del borde<br \/>\nfill(255);           \/\/ color del relleno<br \/>\ndMin = 20;           \/\/ di\u00e1metro m\u00ednimo en p\u00edxels<br \/>\ndMax = 200;          \/\/ di\u00e1metro m\u00e1ximo en p\u00edxels<br \/>\nd = dMin;            \/\/ inicializamos el tama\u00f1o del c\u00edrculo<br \/>\ncrecer = true;       \/\/ empezamos creciendo<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Funci\u00f3n principal, que genera la &#8216;evaluaci\u00f3n cont\u00ednua&#8217;<br \/>\nvoid draw() {<br \/>\nbackground(190);     \/\/ fondo de pantalla de color gris<br \/>\nellipse(mouseX, mouseY, d, d);<br \/>\n\/\/<br \/>\n\/\/ comprobamos si el di\u00e1metro excede de los l\u00edmites m\u00e1ximo y m\u00ednimo<br \/>\n\/\/ y cambiamos el valor de &#8216;crecer&#8217; al llegar a dichos l\u00edmites<br \/>\nif (d &gt;= dMax) {<br \/>\ncrecer = false;<br \/>\n} else if (d &lt;= dMin) {<br \/>\ncrecer = true;<br \/>\n}<br \/>\n\/\/<br \/>\n\/\/ actualizamos el tama\u00f1o del c\u00edrculo aumentando o disminuyendo<br \/>\n\/\/ seg\u00fan sea el valor de &#8216;crecer&#8217;<br \/>\nif (crecer == true) {<br \/>\nd += 3;   \/\/ aumentar 3 p\u00edxels el di\u00e1metro<br \/>\n} else {<br \/>\nd -= 3;   \/\/ reducir 3 p\u00edxels el di\u00e1metro<br \/>\n}<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n<\/span><\/p>\n<p><strong><span style=\"text-decoration: underline\">Martes 3 de febrero<\/span><\/strong><\/p>\n<p>1. array de puntos con distribuci\u00f3n de densidad aleatoria<\/p>\n<p><span style=\"color: #800080\">\/\/ Ceclec_02.a<br \/>\n\/\/ (c)avr &#8211; ene.2009<br \/>\n\/\/ Distribuci\u00f3n aleatoria con variaci\u00f3n de la densidad<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Declaraci\u00f3n de variables globales del programa<br \/>\nfloat d;         \/\/ di\u00e1metro de los puntos<br \/>\nfloat a;         \/\/ tama\u00f1o de la celda<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Inicializaci\u00f3n de variables y par\u00e1metros globales<br \/>\nvoid setup() {<br \/>\nsize(800, 300);      \/\/ tama\u00f1o de pantalla<br \/>\nsmooth();            \/\/ activa el suavizado<br \/>\nd = 7;               \/\/ puntos de 7 px.<br \/>\na = 10;              \/\/ centros separados 10 px.<br \/>\nnoStroke();          \/\/ los puntos se dibujan sin borde<br \/>\nfill(226, 234, 12);  \/\/ amarillo \u00e1cido (226, 234, 12) (#E2EA0C)<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Necesaria para que funcione mousePressed<br \/>\nvoid draw() {<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Al hacer clic con el rat\u00f3n dibujamos una distribuci\u00f3n aleatoria<br \/>\nvoid mousePressed() {<br \/>\nbackground(0);<br \/>\nfor (float j=a\/2; j&lt;height; j += a) {<br \/>\nfor (float i=a\/2; i&lt;width; i += a) {<br \/>\n\/\/ comparamos si un n\u00famero aleatorio es mayor que la posici\u00f3n<br \/>\n\/\/ en altura como condici\u00f3n para dibujar el c\u00edrculo:<br \/>\n\/\/ cuanto mayor sea j menos posibilidades hay de dibujarlo<br \/>\nfloat randomY = random(0, height);<br \/>\nif (randomY &gt; j) {<br \/>\nellipse(i, j, d, d);<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n<\/span><\/p>\n<p>2. el mismo ejercicio, pero con opciones para guardar la imagen como archivo tif<\/p>\n<p><span style=\"color: #800080\">\/\/ Ceclec_02.b<br \/>\n\/\/ (c)avr &#8211; ene.2009<br \/>\n\/\/ Distribuci\u00f3n aleatoria con variaci\u00f3n de la densidad<br \/>\n\/\/ Permite grabar la imagen en un archivo tif pulsando la tecla &#8216;s&#8217;<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Declaraci\u00f3n de variables globales del programa<br \/>\nfloat d;         \/\/ di\u00e1metro de los puntos<br \/>\nfloat a;         \/\/ tama\u00f1o de la celda<br \/>\nString prefijo;  \/\/ prefijo para nombres de archivos tif<br \/>\nint contador;    \/\/ contador para archivos tif sucesivos<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Inicializaci\u00f3n de variables y par\u00e1metros globales<br \/>\nvoid setup() {<br \/>\nsize(800, 300);      \/\/ tama\u00f1o de pantalla<br \/>\nsmooth();            \/\/ activa el suavizado<br \/>\nd = 7;               \/\/ puntos de 7 px.<br \/>\na = 10;              \/\/ centros separados 10 px.<br \/>\nnoStroke();          \/\/ los puntos se dibujan sin borde<br \/>\nfill(226, 234, 12);  \/\/ amarillo \u00e1cido (226, 234, 12) (#E2EA0C)<br \/>\nprefijo = &#8220;Foto_&#8221;;   \/\/ nombre para archivos tif<br \/>\ncontador = 1;        \/\/ n\u00famero de archivo tif a grabar<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Necesaria para que funcionen mousePressed y keyPressed<br \/>\nvoid draw() {<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Al hacer clic con el rat\u00f3n dibujamos una distribuci\u00f3n aleatoria<br \/>\nvoid mousePressed() {<br \/>\nbackground(0);<br \/>\nfor (float j=a\/2; j&lt;height; j += a) {<br \/>\nfor (float i=a\/2; i&lt;width; i += a) {<br \/>\n\/\/ comparamos si un n\u00famero aleatorio es mayor que la posici\u00f3n<br \/>\n\/\/ en altura como condici\u00f3n para dibujar el c\u00edrculo:<br \/>\n\/\/ cuanto mayor sea j menos posibilidades hay de dibujarlo<br \/>\nfloat randomY = random(0, height);<br \/>\nif (randomY &gt; j) {<br \/>\nellipse(i, j, d, d);<br \/>\n}<br \/>\n}<br \/>\n}<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n\/\/ Grabar imagen si pulsamos la tecla &#8216;s&#8217; o &#8216;S&#8217;<br \/>\nvoid keyPressed() {<br \/>\nif (key == &#8216;s&#8217; || key == &#8216;S&#8217;) {<br \/>\nString name = prefijo + contador + &#8220;.tif&#8221;;        \/\/ nombre completo del fichero a grabar<br \/>\nsaveFrame(name);                                  \/\/ graba el fichero tif<br \/>\nprintln(&#8221; &gt;&gt; Archivo &#8221; + name + &#8221; guardado !!&#8221;);  \/\/ mensaje para el usuario<br \/>\ncontador++;                                       \/\/ aumenta el contador en una unidad<br \/>\n}<br \/>\n}<\/span><\/p>\n<p><span style=\"color: #800080\">\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n<\/span><\/p>\n<p><span style=\"color: #800080\"><span style=\"color: #000000\">NOTA:<\/span><\/span><\/p>\n<p><span style=\"color: #800080\"><span style=\"color: #000000\">Abrir una sesi\u00f3n de processing, copiar con el rat\u00f3n un ejercicio y pegarlo en el editor de processing. A continuaci\u00f3n salvar el documento con un nombre. Repetir el procedimiento para los otros ejercicios.<\/span><\/span><\/p>\n<p><span style=\"color: #800080\"><span style=\"color: #000000\">\u00c1lvaro del Valle<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Actualizaci\u00f3n: Teneis los ejercicios haciendo click aqu\u00ed (d\u00eda 1) y aqu\u00ed (d\u00eda 2) De momento, y a falta de otros canales m\u00e1s eficientes, os pongo aqu\u00ed el c\u00f3digo de los ejercicios que hemos visto en las dos primeras clases de processing (27 de enero y 3 de febrero). Martes 27 de enero 1. una elipse [&hellip;]<\/p>\n","protected":false},"author":503,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[835],"tags":[167022],"class_list":["post-155","post","type-post","status-publish","format-standard","hentry","category-cursos","tag-processing"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/posts\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/users\/503"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":8,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/posts\/155\/revisions"}],"predecessor-version":[{"id":201,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/posts\/155\/revisions\/201"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/media?parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/categories?post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/glac\/wp-json\/wp\/v2\/tags?post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}