Eloisa Herrera Nube de Colores

De Casiopea
Eloisa Herrera Nube de Colores


TítuloEloisa Herrera Nube de Colores
Tipo de ProyectoProyecto de Curso
Palabras Clavetarea 4
Período2012-2012
Del CursoImagen Escrita 2012,
CarrerasArquitectura
Alumno(s)Eloísa Herrera
ProfesorHerbert Spencer
 
// El programa crea varios puntos que se van moviendo por la pantalla, y al presionar las teclas r, a o v cambian de color.

float[][] coords;   // arreglo bidimensional de coordenadas x e y
int numDots = 777;  // numero de puntos
float c = 0.01;     // constante de "suavizado" (ver abajo c´mo se utiliza)
color c1 = color(128,128,128);

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

  coords = new float[numDots][2]; // inicializo el arrelgo


  for (int i = 0; i < numDots; i++) {
    // recorro el arreglo y asigno valores aleatorios
    coords[i][0] = random(width);   // [i][0] para los valores en x
    coords[i][1] = random(height);  // [i][1] para los valores en 7
  }
  smooth();
  background(255);
}

void draw() {


  for (int i = 0; i < numDots; i++) {
    // para cada uno de los puntos (o valores del arreglo)...

    // defino al siguiente que es el actual (i)+1
    // este valor es modulado (%) por el total de puntos para no salirme del arreglo
    int next = (i + 1) % numDots; 

    // calculo la diferencia en x e y entre el actual y el siguiente
    // y almaceno esos valores en difx, dify
    float difx = coords[i][0] - coords[next][0];
    float dify = coords[i][1] - coords[next][1];

    // ahora deino unas nuevas coordenadas que son:
    // las coordenadas actuales menos la diferencia ponderada por la constante c
    float nx = coords[i][0] -= difx * c;
    float ny = coords[i][1] -= dify * c;

    // dibujo un trazo entre la ubicaci´n actual y la siguiente
    stroke(0, 20);
    stroke(c1);
    line(coords[i][0], coords[i][1], nx, ny);
  }
}

void keyPressed() {
  // si presiono 'r' dibuja en rojo
  if (key == 'r') {
    c1=color(255, 0, 0);
     stroke(c1);
  }
  // si presiono 'v' dibuja en verde
  if (key == 'v') {
    c1=color(0,255,0);
     stroke(c1);
  }
  // si presiono 'a' dibuja en azul
   if (key == 'a') {
    c1=color(0, 0, 255);
     stroke(c1);
  }
  if (key == ' ') {
    // si preciono ESPACIO pongo un velo blanco sobre el dibujo
    noStroke();
    fill(255, 160);
    rect(0, 0, width, height);
    stroke(0, 60);
  }

}