Maximiliano Olea : Paisaje Puntillista
Título | Maximiliano Olea: Paisaje Puntillista |
---|---|
Tipo de Proyecto | Proyecto de Curso |
Palabras Clave | tarea 8 |
Asignatura | Taller Inicial 1ª y 2ª Etapa, |
Del Curso | Imagen Escrita 2012, |
Carreras | Arquitectura |
Alumno(s) | Maximiliano Olea |
Profesor | Herbert 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. */
}