miércoles, 22 de febrero de 2012

PROCESSING

/**
 * Simple Radial Gradient
 * by Ira Greenberg.
 *
 * Using the convenient red(), green()
 * and blue() component functions,
 * generate an array of radial gradients.
 */

void setup(){
  size(400, 400);// cambie el tamaño que originalmente era 200,200
  background(125,200,100); // el fonfo era negro
  smooth();

  // create a simple table of gradients
  int columns = 10;// agregue 6 columnas, eran 4
  int radius = (width/columns)/2;
  // create some gradients
  for (int i=radius; i< width; i+=radius*2){
    for (int j =radius; j< height; j+=radius*2){
      createGradient(i, j, radius,
      color(int(random(255)), int(random(255)), int(random(255))),
      color(int(random(255)), int(random(255)), int(random(255))));
    }
  }
}

void createGradient (float x, float y, float radius, color c1, color c2){
  float px = 0, py = 0, angle = 0;

  // calculate differences between color components
  float deltaR = red(c2)-red(c1);
  float deltaG = green(c2)-green(c1);
  float deltaB = blue(c2)-blue(c1);
  // hack to ensure there are no holes in gradient
  // needs to be increased, as radius increases
  float gapFiller = 8.0;

  for (int i=0; i< radius; i++){
    for (float j=0; j<360; j+=1.0/gapFiller){
      px = x+cos(radians(angle))*i;
      py = y+sin(radians(angle))*i;
      angle+=1.0/gapFiller;
      color c = color(
      (red(c1)+(i)*(deltaR/radius)),
      (green(c1)+(i)*(deltaG/radius)),
      (blue(c1)+(i)*(deltaB/radius))
        );
      set(int(px), int(py), c);    
    }
  }
  // adds smooth edge
  // hack anti-aliasing
  noFill();
  strokeWeight(3);
  ellipse(x, y, radius*2, radius*2);
}

No hay comentarios:

Publicar un comentario