Daniela Reyes: Pincel 2
De Casiopea
Título | Daniela Reyes: pincel 2 |
---|---|
Tipo de Proyecto | Proyecto de Curso |
Palabras Clave | tarea 9 |
Asignatura | Taller Inicial 1ª y 2ª Etapa, |
Del Curso | Imagen Escrita 2012, |
Carreras | Arquitectura |
Alumno(s) | Daniela Reyes |
Profesor | Herbert Spencer |
// Construcción de un pincel que traza mediante pequeños trazos superpuestos verticalmente. Se juega con el brillo y saturación de la foto (La foto es de dos gaviotas que descansan sobre el techo de una casa, sus formas se pierden con el trazado del pincel).
import processing.pdf.*; PImage imagene; // 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 = 20; float margenArriba = 10; float margenDerecha = 20; float margenAbajo = 30; float escala; void setup() { imagene = loadImage("imagene.jpg"); // se carga la imagene, se "construye" el objeto PImage imagene size(609, 765, PDF, "Paisaje.pdf"); // tamaño carta // cálculos para escalar desde la imagene hacia el pincel float ancho = width - (margenIzquierda + margenDerecha); escala = ancho/(float)imagene.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 = 10; // muestreo regular desde la foto, esto se puede modificar.... for (int y = 0; y < imagene.height; y += spacer) { for (int x = 0; x < imagene.width; x += spacer) { // obtengo el color float plotX = map(x, 0, imagene.width, margenIzquierda, width-margenDerecha); float plotY = map(y, 0, imagene.height, margenArriba, margenArriba + (imagene.height * escala)); color c = imagene.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 + imagene.height * escala + interlinea); interlinea += 15; } } /*************************************************************/ void trazo(float x, float y, color c, float amp) { int trazos = round (map(brightness(c),0,255,23,1)); float alfa = map (brightness (c), 0, 255, 200,10); pushMatrix(); { translate(x, y); stroke (hue(c), saturation(c) * 0.1, brightness (c) * 1.1, alfa); // color de la imagen pasada al trazo rotate(random(0*PI)); // inclinación random strokeWeight(12); // grosor de la línea line(0, amp/2, 0, -amp/2); // trazo línea } popMatrix(); }