Daniel Galaz Tarea 8: Pincel Curvo

De Casiopea
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.
Imagen Escrita: Judokas con pincel curvo
TítuloImagen Escrita: Judokas con pincel curvo
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 8, imagen escrita
Período2012-
AsignaturaTaller Inicial 1ª y 2ª Etapa,
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Daniel Galaz
ProfesorHerbert Spencer
PDFArchivo:Judokas.pdf

/*Basado en el ejemplo del Profesor Herbert Spencer,se usa un pincel con forma curva para trazar la imagen en processing*/

import processing.pdf.*;

PImage JUDO;  
PFont font;    
String[] code;   

/*Conversión de pixeles a puntos tipográficos
 
 1 pt = 0.0352778 cm
 1 cm = 28.346438837 pt
 */

float margenIzquierda = 50; 
float margenArriba  = 30;
float margenDerecha = 40;
float margenAbajo   = 30;
float escala;

void setup() {

  JUDO = loadImage("JUDO.jpg"); 
  size(609, 765, PDF, "judokas.pdf");  

  // cálculos para escalar desde la imagen hacia el pincel

  float ancho = width - (margenIzquierda + margenDerecha);
  escala = ancho/(float)JUDO.width;

  noStroke();
  noLoop(); 
  background(255);

  font = createFont("SegoeUI", 7); 
  textFont(font, 10);
  code = loadStrings("mi_pincel.pde"); 
}




void draw() {

  float spacer = 5;

  // muestreo regular desde la foto
  for (int y = 0; y < JUDO.height; y += spacer) {
    for (int x = 0; x < JUDO.width; x += spacer) {

     
      float plotX = map(x, 5, JUDO.width, margenIzquierda, width-margenDerecha);
      float plotY = map(y, 5, JUDO.height, margenArriba, margenArriba + (JUDO.height * escala));
      color c = JUDO.get(x, y);


      pincel(plotX, plotY, c, spacer);
    }
  }
  printCode();
  println("Se ha creado el PDF");
  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 + JUDO.height * escala + interlinea);
    interlinea += 10;
  }
}

/***********************FORMA DEL PINCEL*******************************/
void pincel(float x, float y, color c, float amp) {
  fill (c);
  stroke (brightness(c));
  line(x-amp, y+amp, x+amp, y-amp);
  ellipse (x+amp, y+amp, map(hue(c), 0, 145, 0, 4), 3);
  ellipse(x, y, map(saturation(c), 0, 90, 0, 9), 9);

  map(saturation(c), 0, 90, 0, 9);
  map(hue(c), 0, 145, 0, 4);
}