Macarena Álamos: Proyectos de Presentación al Lenguaje Abierto

De Casiopea




Título
Período2011-2011
AsignaturaPresentación al Lenguaje Abierto
Del CursoPresentación al Lenguaje Abierto
CarrerasDiseño Gráfico, Diseño Industrial
Alumno(s)Macarena Álamos R
ProfesorHerbert Spencer, Marcelo Araya


Autoretrato generado con código de processing

Código



/**
 
 Pintor Impresionista,
 que inventa su pincel que recrea su mirada
 Este sketch genera un PDF mientras se visualiza en pantalla.
 
 
 					Herbert
 */


import processing.pdf.*;
PImage paisaje;

/*
 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 = 85;   // 3 cm
float margenArriba    = 85;
float margenDerecha   = 85;

float escala;
boolean pinta;
int x, y; // coordenadas de muestreo dentro de la imagen

void setup() {
  paisaje = loadImage("maca3.jpg");  // se carga la imagen original (bitmap)
  size(765, 765);     // 27 x 27 cm.
  smooth();
  beginRecord(PDF, "Macarena"+day()+hour()+minute()+".pdf");  // tambi´n grabe un PDF

  float ancho = width - (margenIzquierda + margenDerecha);
  escala = ancho / (float)paisaje.width; // cuociente entre el ancho de impresión y el tamaño de la imagen
  strokeCap(SQUARE);
  background(255); // fondo blanco
  x = y = 0;       // reseteo las coordenadas del muestreo, esquina superior izquierda
  pinta = true;
}


void draw() {

  float spacer = 4; // espaciador del muestreo, no va cada 1 pixel, sino que cada "spacer" pixeles


  // plotX y plotY corresponden a los valores mapeados para cada pincelada. 
  // Este mapeo traslada el valor X dentro de la imagen al valor X en la hoja
  // de papel, en el lugar exacto donde queremos que se imprima, considerando los márgenes

  float plotX = map(x, 0, paisaje.width, margenIzquierda, width-margenDerecha);
  float plotY = map(y, 0, paisaje.height, margenArriba, margenArriba + (paisaje.height * escala));

  color c = paisaje.get(x,y);
  if(pinta) pincel(plotX, plotY, c, spacer);

  if (x < paisaje.width - spacer) {
    x+= spacer;
  }
  else if(y < paisaje.height) {
    x = 0; 
    y += spacer;
  }

  if (y > paisaje.height) {
    println("listo!");
    endRecord();
    pinta = false;
    exit();
  }
}

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


  int cuadros = (int)map(brightness(c), 0, 255, 20, 0);

  for (int i = 0; i < cuadros; i++) {
    pushMatrix();
    {
      translate(x + 10, y + 10); // quito ruido a la grilla
      noStroke(); 
      fill(c, 100); // cada cuadrado mantiene el color con cierta transparencia
      quad (1, 1, 3, 1, 3, 3, 1, 3);
    }
    popMatrix();
  }
}


Resultado






















Dibujo de Círculo con Plotter Humano

Página del Proyecto

Imágenes

Propuesta de Brazo para dibujar Círculos

La propuesta para este aparato que dibuja círculos está pensado sobre el gesto de extender y contraer el brazo en un solo eje, de la manera que en un desplazamiento de la mano hacia adelante y atrás, se puede mover este objeto que lleva en uno de sus extremos un lápiz

Propuesta de Brazo


















En este video falta una parte del aparato, el que en la foto es empujado por mi mano, ya que de esa manera se ve mas claro el movimiento de ir y venir de la mano

Propuesta de Juego con Pliegues en el Papel

La idea de esta pieza de papel plegada es que a hacer calzar los calados se puedan dibujar letras que nombran la misma acción de CALZAR.

Despliegue en sí no tiene, ya que es un juego que no tiene inicio ni fin determinados.

Coreografía de Movimiento en Processing

Movimiento de la Hospedería de los Signos


void setup () {
  size (200, 450);
  background(255);
}

void draw() {

  noStroke();
  fill (#999999);
  //primera fila-------------------------------------

  rect (0, 0, 50,50);
  if (mouseY > 50) {
    mouseY=50;
  }
  rect (50, mouseY, 50,50);
  rect (100, mouseY *2, 50,50);
 

  //segunda fila------------------------------------
  rect (0,50,50,50);
  rect (50, mouseY+50,50,50); 
  rect (100, (mouseY*2)+50,50,50);
 

  //tercera fila--------------
  rect (0,100, 50,50);
  rect (50, mouseY+100,50,50); 
  rect (100, (mouseY*2)+100,50,50); 

  //cuarta fila--------------
  rect (0,150, 50,50);
  rect (50, mouseY+150,50,50); 
  rect (100, mouseY+150,50,50); 

  //cuarta fila b-----------

  rect (100, mouseY+150,50,50); 
  rect (50, (mouseY*2)+150,50,50); 
  rect (mouseY+100,150, 50,50);

  //quitna fila-----------------------



  rect (50,200, 50,50);
  rect (100, mouseY+200,50,50); 

  //quinta fila b---------------

  rect (100, mouseY+200,50,50); 
  rect (50, (mouseY*2)+200,50,50); 
  rect (mouseY +100,200, 50,50);
  rect (0, (-mouseY*2)+200,50,50); 
 
  //sexta fila------------------


  rect (0,250, 50,50);
  rect (50,mouseY+250, 50,50);
  rect (100, mouseY+250,50,50); 

  //septima fila---------------


  rect (0,300, 50,50);
  rect (0, (mouseY*2)+300,50,50);
  rect (50,mouseY + 300, 50,50);
  rect (100,-mouseY +300, 50,50);

  fill (255, 50);
  rect(0,0,width, height);
}

Segunda Propuesta con dos ejes de Movimiento



void setup() {
  size (200, 500);
  noStroke ();
  background(255);
}

void draw() {

  //Cuadro Blanco-----------------------------------------------------------
  fill (255);
  rect(25, -mouseY+100, 50,50);
  if (mouseY>50) {
    mouseY=50;
  }

  //Fila Superior Detras----------------------------------------------------
  fill (0);
  rect(25, -mouseY+75, 50,50);
  rect(75, -mouseY+75, 50,50);
  rect(125, 75,50,50);
  
   //Fila Superior Frente----------------------------------------------------
  fill (#ff6600);
  rect(25, mouseY+75, 50,50);
  rect(75, 75, 50,50);
  rect(125, mouseY+75,50,50);
  
  //Fila Central Detras----------------------------------------------------
  fill (#ff6600);
  rect(25, -mouseY+225, 50,50);
  rect(75, (-mouseY*2)+225, 50,50);
  rect(125, 225,50,50);
  
   //Fila Central Frente----------------------------------------------------
  fill (0);
  rect(25, mouseY+225, 50,50);
  rect(75, -mouseY+225, 50,50);
  rect(-mouseY + 125, 225,50,50);
  
  //Fila Inferior Detras----------------------------------------------------
  fill (0);
  rect(25, -mouseY+375, 50,50);
  rect(75, 375, 50,50);
  rect(125, mouseY +375,50,50);
  
   //Fila Inferior Frente----------------------------------------------------
  fill (#ff6600);
  rect(25, mouseY+375, 50,50);
  rect(-mouseY+75, 375, 50,50);
  rect(125,(-mouseY*2)+375,50,50);
 
 
 //Cuadro Transparente------------------------------------------------------
  fill (255, 50);
 rect(0,0,width, height);
}


Tercera Propuesta con un eje de Movimiento




void setup() {
  size (200, 500);
  noStroke ();
  background(255);
}

void draw() {

  //Cuadro Blanco-----------------------------------------------------------
  fill (255);
  rect(25, -mouseY+100, 50,50);
  if (mouseY>50) {
    mouseY=50;
  }

  //Fila Superior Detras----------------------------------------------------
  fill (0);
  rect(25, -mouseY+75, 50,50);
  rect(75, mouseY+75, 50,50);
  rect(125, 75,50,50);
  
   //Fila Superior Frente----------------------------------------------------
  fill (#ff6600);
  rect(25, mouseY+75, 50,50);
  rect(75, 75, 50,50);
  rect(125, (mouseY*2)+75,50,50);
  
  //Fila Central Detras----------------------------------------------------
  fill (#ff6600);
  rect(25, -mouseY+225, 50,50);
  rect(75, (mouseY*2)+225, 50,50);
  rect(125, 225,50,50);
  
   //Fila Central Frente----------------------------------------------------
  fill (0);
  rect(25, mouseY+225, 50,50);
  rect(75, -mouseY+225, 50,50);
  rect( 125, (mouseY*2) + 225,50,50);
  
  //Fila Inferior Detras----------------------------------------------------
  fill (0);
  rect(25, -mouseY+375, 50,50);
  rect(75, 375, 50,50);
  rect(125, mouseY +375,50,50);
  
   //Fila Inferior Frente----------------------------------------------------
  fill (#ff6600);
  rect(25,mouseY + 375, 50,50);
  rect(75, 375, 50,50);
  rect(125,(-mouseY*2)+375,50,50);
 
 
 //Cuadro Transparente------------------------------------------------------
  fill (255, 50);
 rect(0,0,width, height);
}