Eduardo Arratia tarea Insectos 2012

De Casiopea
Revisión del 22:45 30 may 2012 de Eduardoarratia (discusión | contribuciones)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Eduardo Arratia tarea insectos 2012



TítuloEduardo Arratia tarea insectos 2012
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 7
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Eduardo Arratia
ProfesorHerbert Spencer

el número de elementos rompe el esquema de la cuadrilla oculta bajo el espesor de los trazos que forman cada elemento.

Insect[] ins;
float margin = 100;

void setup() {
  size(700, 700);

  int ynum = 10;
  int xnum = 10;

  ins = new Insect[ynum * xnum];

  float ysp = (height - (2 * margin)) / ((float)ynum - .8);
  float xsp = (width - (2 * margin)) / ((float)xnum - .8);

  int c = 0; 

  for (float y = margin; y <= height - margin; y+= ysp) {
    for (float x = margin; x <= width - margin; x += xsp) {
      ins[c] = new Insect(x, y);
      c ++ ;
    }
  } 
  smooth();
}


void draw() {
  background(#A2A5C4);
  for (int i = 0; i < ins.length; i++) {
    ins[i].render();
  }
}


class Insect {
  float x, y;
  float[][] v; 
  int vn;  
  float tam;  
  float w, h; 

  Insect(float x, float y) {
    this.x = x;
    this.y = y;
    vn = round(random(12, 40));
    v = new float[vn][5];
    tam = 50;
    init();
  }

  void init() {
    w = tam ;
    h = tam;
    for (int i = 0; i < vn; i++) {
      v[i][0] = random(w);
      v[i][1] = random(-h, h/4);
    }
  }

  void trace() {
    noFill();
    stroke(#957065);
    strokeWeight(3);
    beginShape();
    vertex(v[1][1], v[1][1]);
    for (int i = 0; i < vn; i++) {
      curveVertex(v[0][0], v[i][1]);
    }
    vertex(v[vn-5][0], v[vn-1][1]);
    endShape();
  }

  void render() {
    pushMatrix();
    {
      translate(x, y);
      trace();
      scale(-3, 3);
      trace();
    }
    popMatrix();
  }
}

void keyPressed() {
  if (key == 'q') {
    for (int i = 0; i < ins.length; i=i+90) {
      ins[i].init();
    }
  }
  if (key == 'w') {
    for (int i = 0; i < ins.length; i=i+30) {
      ins[i].tam++;
      ins[i].init();
    }
  }
  if (key == 'e') {
    for (int i = 0; i < ins.length; i= i+5) {
      ins[9].tam--;
      ins[20].init();
    }
  }
}
}