Alumnus Exemplar: Ciclo For, parte 2

De Casiopea



TítuloCiclo For, ejemplo avanzado
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 2
AsignaturaImagen Escrita
Del CursoImagen Escrita 2013 - ARQ, Imagen Escrita 2013 - DIS
CarrerasArquitectura, Diseño Gráfico
Alumno(s)Alumnus Exemplar
ProfesorHerbert Spencer


float margen, xSpace, ySpace;
// el margen, el espaciador horizontal y el vertical

int xElems, yElems;
// la cantidad de elementos horizontales y verticales

void setup() {
  
  size(500, 500);
  
  // al modificar estos valores, modifico el resultado final
  margen = 100;
  xElems = 20;
  yElems = 20;
  
  // una función personalizada, que se especifica más abajo
  calc();
  
  // impido que el mouse parta con las coordenadas (0,0)
  mouseX = xElems;
  mouseY = yElems;
}

void draw() {
  
  background(255);
  
  // recalculo la cantidad de elementos de 
  // acuerdo a la posición del mouse.
  // (lo divido por 3 sólo para efectos prácticos de escala)
  
  xElems = (int) mouseX / 3;
  yElems = (int) mouseY / 3;
  
  calc();
  
  // 2 ciclos for anidados, para armar un patrón bidimensional (2D)
  
  for (float y = margen; y <= height-margen; y += ySpace) {
    for (float x = margen; x <= width-margen; x += xSpace) {
      ellipse(x, y, 3, 3);
    }
  }
}

void calc() {
  xSpace = (width - 2 * margen) / (float)(xElems - 1);
  ySpace = (height - 2 * margen) / (float)(yElems - 1);
}