見出し画像

ProcessingでGenerative art #86

Code

int actRandomSeed = 0;
float colHue;
float circleSize = 400;

void setup() {
  size(800, 800);
  pixelDensity(2);
  colorMode(HSB, 360, 100, 100, 100);
}

void draw() {
  randomSeed(actRandomSeed);
  background(333, 7, 100);

  drawCircles(200, 200, circleSize);
  drawCircles(width - 200, 200, circleSize);
  drawCircles(200, height-200, circleSize);
  drawCircles(width - 200, height-200, circleSize);
}

void drawCircles(float posX, float posY, float diameter) {
  float w = map(diameter, circleSize, 1, 2, 0.5);
  pushMatrix();
  fill(randomColor());
  stroke(0);
  strokeWeight(w);
  float randomDiameter = random(diameter);
  translate(posX, posY);
  ellipse(0, 0, diameter, diameter);

  if (diameter > 100) {
    rotate(random(PI));
    pushMatrix();
    drawCircles(0 - (diameter - randomDiameter)/2, 0, randomDiameter);
    popMatrix();
    drawCircles(0 - diameter/2 + randomDiameter + (diameter - randomDiameter)/2, 0, diameter - randomDiameter);
  }
  popMatrix();
}

color randomColor() {
  float r = random(1);
  float alph = 80;

  if (r > 6.0/7.0) return color(0, 100, 100, alph);
  else if (r > 5.0/7.0) return color(37, 100, 100, alph);
  else if (r > 4.0/7.0) return color(55, 100, 100, alph);
  else if (r > 3.0/7.0) return color(216, 100, 100, alph);
  else if (r > 2.0/7.0) return color(318, 100, 100, alph);
  else if (r > 1.0/7.0) return color(360, alph);
  else return color(0, alph);
}

void mousePressed() {
  actRandomSeed = (int)random(100000);
}

void keyPressed() {
  if (key == 's')saveFrame("####.png");
}

Happy coding!

応援してくださる方!いつでもサポート受け付けてます!