Maximiliano Olea : Paisaje Puntillista

De Casiopea
Maximiliano Olea: Paisaje Puntillista


TítuloMaximiliano Olea: Paisaje Puntillista
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 8
AsignaturaTaller Inicial 1ª y 2ª Etapa,
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Maximiliano Olea
ProfesorHerbert Spencer

/* La idea de esta tarea es crear un trazo de luz y color (impresionista). Para esto quise imitar el trazo de un cuadro puntillista a través de "puntos" (ellipse) y que esta se moviera aleatoriamente dentro de un rango determinado (espaciador y cordenadas de los puntos) y con una forma tambien aleatoria para simular la naturalidad de la técnica.

Imagen Escrita 2012: Construcción de un trazo (algoritmo pictórico de la luz y el color) 

*/

import processing.pdf.*;

PImage sunset; // la foto: el encuadre, la escena, el paisaje PFont font; // la fuente tipográfica String[] code; // el texto del código

/* Al exportar un PDF, Processing translada

las unidades de pixeles a puntos tipográficos.

1 pt = 0.0352778 cm
1 cm = 28.346438837 pt
*/

float margenIzquierda = 30; float margenArriba = 20; float margenDerecha = 20; float margenAbajo = 20; float escala;

void setup() {

 sunset = loadImage("sunset.jpg");   // se carga la imagen, se "construye" el objeto PImage sunset
 size(609, 765, PDF, "Sol.pdf");  // tamaño carta
 // cálculos para escalar desde la imagen hacia el pincel
 float ancho = width - (margenIzquierda + margenDerecha);
 escala = ancho/(float)sunset.width;
 noStroke();
 noLoop(); 
 background(255);
 font = createFont("Courier", 8); // construyo la tipografía a partir de una fuente de sistema
 textFont(font, 8);
 code = loadStrings("trazo.pde"); // cargo el código "trazo" (el pincel)

}


void draw() {

 float spacer = random (40, 70);
 // muestreo regular desde la foto, esto se puede modificar....
 for (int y = 0; y < sunset.height; y += spacer) {
   for (int x = 0; x < sunset.width; x += spacer) {
     // obtengo el color
     float plotX = map(x, 0, sunset.width, margenIzquierda, width-margenDerecha);
     float plotY = map(y, 0, sunset.height, margenArriba, margenArriba + (sunset.height * escala));
     color c = sunset.get(x, y);


     trazo(plotX, plotY, c, spacer);
   }
 }
 printCode();
 println("----->PDF done!");
 exit();

}

void printCode() {

 float interlinea = 0;
 for (int i = 0; i < code.length; i++) {
   // escribo cada línea de código en la pantalla
   text(code[i], width/4, 2 * margenArriba + sunset.height * escala + interlinea);
   interlinea += 15;
 }

}



/*TRAZO*/

/*Trazo Puntillista*/

void trazo(float x, float y, color c, float amp) {

 fill(c);

   ellipse(x+random(3,5),y+random(1,3), random(7,9),random(7,9));
   
 /*Se alteran las posiciones de x e y con un random para que los 
 puntos que formarán el trazo hagan aparecer la fotografía de una 
 manera más natural, asímilándose a un cuadro puntillista.
 Esta operación se repite con el tamaño de los "puntos" que va a 
 variar para asimilar pinceladas irregulares.
 */

}