見出し画像

ProcessingでGenerative art #52

Code

int tileCount = 10;
int actRandomSeed = 0;
float maxDist;

void setup() {
  size(750, 750);
  pixelDensity(2);
  strokeWeight(0.5);
  noFill();
  stroke(0, 50);
  maxDist = sqrt(sq(width)+sq(height));
}

void draw() {
  background(255);
  randomSeed(actRandomSeed);
  drawTile();
}

void drawTile() {
  translate(width/tileCount/2, height/tileCount/2);
  for (int gridY = 0; gridY< tileCount; gridY++) {
    for (int gridX = 0; gridX< tileCount; gridX++) {
      int posX = width/tileCount * gridX;
      int posY = height/tileCount * gridY;
      drawCircle(posX, posY, width/tileCount);
    }
  }
}

void drawCircle(float posX, float posY, float d) {
  pushMatrix();
  translate(posX, posY);
  float angle = map(dist(mouseX, mouseY, posX, posY), 0, maxDist, 15, 180);
  float num = map(dist(mouseX, mouseY, posX, posY), 0, maxDist, d/4, d/2);
  float diameter = map(dist(mouseX, mouseY, posX, posY), 0, maxDist, 250, 1);
  for (float i = d/2; i > 0; i -= random(num)) {
    for (float theta = 0; theta < TWO_PI; theta += radians(angle)) {
      float x = i * cos(theta);
      float y = i * sin(theta);
      ellipse(x, y, diameter, diameter);
    }
  }
  popMatrix();
}

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

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

Happy Coding!

参考: 『Generative Design-Processingで切り拓く、デザインの新たな地平』

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