見出し画像

ProcessingによるGenerative art作品#9

前に作ったものからの派生系です。

色とかは使わずにシンプルですが面白くなりました。黄金長方形の螺旋のような。
arc()関数をはじめてうまく使えたような気がします。
これはいじりがいがありそうなのでいいアレンジができたらまたアウトプットしたいと思います。

Code

void setup() {
  size(960, 540);
  pixelDensity(2);
  colorMode(HSB, 360, 100, 100, 100);
  noLoop();
}

void draw() {
  background(360);
  strokeWeight(8);
  noFill();
  stroke(0);
  rect(20, 20, width-40, height-40);
  divideRect(20, 20, width-40, height-40, 8);
}

void mousePressed() {
  redraw();
}

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

void divideRect(float x, float y, float w, float h, int n) {
  float randw = random(w); 
  float randh = random(h);
  float r = random(1);
  float ra = random(1);
  strokeWeight(n);

  if (r < 0.3) {    //30%の確率でarcを描く
    if (ra > 0.75) {
      arc(x+w/2, y+h/2, w, h, PI/2, PI);    //右上
    } else if (ra > 0.5) {
      arc(x+w/2, y+h/2, w, h, PI, PI+PI/2);    //右下
    } else if (ra > 0.25) {
      arc(x+w/2, y+h/2, w, h, PI+PI/2, PI*2);    //左下
    } else {
      arc(x+w/2, y+h/2, w, h, 0, PI/2);    //左上
    }
  }

  if (w>h) {
    line(x+randw, y, x+randw, y+h);

    if (n>1) {
      divideRect(x, y, randw, h, n-1); 
      divideRect(x+randw, y, w-randw, h, n-1);
    }
  }
  if (w<h) {
    line(x, y+randh, x+w, y+randh);
    if (n>1) {
      divideRect(x, y, w, randh, n-1);
      divideRect(x, y+randh, w, h-randh, n-1);
    }
  }
}

終わりに

これでやっと10作品目です。
いつもTwitterのふぁぼやnoteでスキをくれる方、本当にありがとうございます!モチベ上がってます!命に刻んでます!
100作品やったるぞ!
Happy coding!

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