ArrayList<Brush> brushes; 
void setup() {
  size(600,600);
  background(255);
  
  colorMode(HSB);
  brushes = new ArrayList<Brush>();
  
}
void draw() {
   
  for (Brush brush : brushes) {
    brush.paint();
  }
}
void mouseClicked() {
  brushes.add(new Brush());
}
class Brush {
  float angle;
  int components[];
  float x, y;
  color clr;
  Brush() {
    angle = random(TWO_PI);
    x = mouseX;
    y = mouseY;
    clr = color(random(255), 0, random(255), 5);
    components = new int[4];
    for (int i = 0; i < 4; i++) {
      components[i] = int(random(1, 4));
    }
  }
  void paint() {
    float a = 0;
    float r = 0;
    float x1 = x;
    float y1 = y;
    float u = random(0.5, 1);
    
    fill(clr);
    noStroke();    
    
    ellipse(x, y, random(50,250), random(50,250));
    if (x < 0 || x > width ||y < 0 || y > height) {
      angle += HALF_PI;
    }
    x += 3 * cos(angle);
    y += 3 * sin(angle); 
    angle += random(-0.15, 0.15);
  }