見出し画像

ProcessingでGenerative art #82

Code

int actRandomSeed = 0;
int num = 15;
float[] x = new float[num]; 
float[] y = new float[num];
float rectSize;

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

  for (int i = 0; i < num; i ++) {
    x[i] = map(i, 0, num, 0, width);
    y[i] = map(i, 0, num, 0, height);
  }

  rectSize = (width/num) - 5;
}

void draw() {
  randomSeed(actRandomSeed);
  //background(0);
  background(360);
  tile();
  drawTriangle();
}

void drawTriangle() {
  beginShape(TRIANGLES);
  for (int i = 0; i < 9; i ++) {
    noFill();
    fill(randomColor(), 20);
    stroke(randomColor());
    vertex(x[(int)random(0, num-1)] + rectSize/2, y[(int)random(0, num-1)] + rectSize/2);
  }
  endShape();
}

void tile() {
  stroke(0);
  for (int j = 0; j < num; j ++) {
    for (int i = 0; i < num; i ++) {
      noFill();
      stroke(randomColor());
      rect(x[i], y[j], rectSize, rectSize);
      fill(randomColor());
      noStroke();
      drawShape(x[i], y[j], rectSize);
      noStroke();
      fill(randomColor());
      ellipse(x[i] + rectSize/2, y[j] + rectSize/2, 5, 5);
    }
  }
}

void drawShape(float posX, float posY, float size) {
  float halfSize = size/2;
  pushMatrix();
  translate(posX + halfSize, posY + halfSize);
  if (random(1) > 0.8) {
    rotate(HALF_PI*int(random(2)));
    stroke(randomColor());
    line(-halfSize, -halfSize, halfSize, halfSize);
  } else if (random(1) > 0.6) {
    noStroke();
    rotate(HALF_PI*int(random(4)));
    arc(0, -halfSize, size, size, 0, PI);
  } else if (random(1) > 0.4) {
    noStroke();
    rotate(HALF_PI*int(random(4)));
    arc(-halfSize, -halfSize, size*2, size*2, 0, HALF_PI);
  } else if (random(1) > 0.2) {
    ellipse(0, 0, size, size);
  }
  popMatrix();
}

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

  if (r > 0.83) return color(0, 100, 100);
  else if (r > 0.66) return color(72, 100, 100);
  else if (r > 0.50) return color(144, 100, 100);
  else if (r > 0.34) return color(216, 100, 100);
  else if (r > 0.18) return color(288, 100, 100);
  else return color(0);
}

void mousePressed() {
  actRandomSeed = (int)random(100000);
  
  for (int i = 0; i < num; i ++) {
    x[i] = map(i, 0, num, 0, width);
    y[i] = map(i, 0, num, 0, height);
  }
}

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

Happy coding!!

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