Daniela Reyes: Pincel 2

De Casiopea
Daniela Reyes: pincel 2


TítuloDaniela Reyes: pincel 2
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 9
AsignaturaTaller Inicial 1ª y 2ª Etapa,
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Daniela Reyes
ProfesorHerbert 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();
}