Juan Francisco Rojas: Insectos

De Casiopea
Juan Francisco Rojas: Insectario


TítuloJuan Francisco Rojas: Insectario
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 7
Período2012-
AsignaturaTaller Inicial 1ª y 2ª Etapa,
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Juan Francisco Rojas
ProfesorHerbert Spencer
  • La tarea 7 consistía en crear un objeto class{} y construir una colección de ellos a modo de la variación de alguna característica del objeto, como por ejemplo: el tamaño, el color, la forma, etc.
  • Mi trabajo consistía en un insectario de cucarachas o también un muestrario de arañas para el que quisiera verlo así, que muestra los distintos tipos de insectos o arañas, para cual fuera el caso.
  1. Tecla g para guardar imagenes
  2. Tecla espacio para cambiar los objetos

insectos[] ins; // creo un conjunto de elementos que seran los insectos
float margin = 70; // margen interno de la img
void setup() {
  size(700, 700);

  int yNum = 5; // cantidad de insectos en y
  int xNum = 5; // cantidad de insectos en x

  ins = new insectos[yNum * xNum];

  float ysp = (height - (2 * margin)) / ((float)yNum - 1);
  float xsp = (width - (2 * margin)) / ((float)xNum - 1);

  int c = 0; // contador

  for (float y = margin; y <= height - margin; y+= ysp) {
    for (float x = margin; x <= width - margin; x += xsp) {
      ins[c] = new insectos(x, y);
      c++;
    }
  } 
  smooth(); // suavizado de la línea
}

void draw() {
  background(#FFFFFF); // color de fondo blanco
  for (int i = 0; i < ins.length; i++) {
    ins[i].render();
  }
}

class insectos {
  float x, y;
  float[][] v; // vertices
  int vn; // número aleatorio de vértices
  float tam; // tamaño
  float w, h; // width, height = ancho, alto

  insectos(float x, float y) {
    this.x = x;
    this.y = y;
    vn = round(random(10, 50)); // hace que salga un número aleatorio entre 10 y 25
    v = new float[vn][2];
    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/2, h/2);
    }
  }

  void trace() {
    fill(0);
    strokeWeight(.25); // grosor de la línea
    beginShape();
    vertex(v[0][0], v[0][1]);
    for (int i = 0; i < vn; i++) {
      curveVertex(v[i][0], v[i][1]);
    }
    vertex(v[vn-1][0], v[vn-1][1]);
    endShape();
  }

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

void keyPressed() {
  
  if (key == 'g'){ // apretar tecla g para guardar la img
    saveFrame("Data/insectos##.jpg");
  }
  if (key == ' ') { // se crea un función a la tecla de espacio
    for (int i = 0; i < ins.length; i++) {
      ins[i].init();
    }
  }
}