見出し画像

Generative Art #134

Code

void setup() {
 size(840, 840);
 pixelDensity(2);
 rectMode(CENTER);
 noLoop();
}

void draw() {
 tile();
}

void tile() {
 int count = 8;
 float w = width/count;
 int toggle = 0;

 noFill();
 noStroke();

 for (int j = 0; j < count; j++) {
   for (int i = 0; i < count; i++) {
     if (toggle == 0) {
       fill(0);
     } else {
       fill(255);
     }

     square(i*w + w/2, j*w + w/2, w);

     if (toggle == 0) {
       stroke(255);
       fill(255);
     } else {
       stroke(0);
       fill(0);
     }

     randomShape(i*w + w/2, j*w + w/2, w);

     if (toggle == 0)toggle = 1;
     else toggle = 0;
   }
 }
}

void randomShape(float x, float y, float s) {
 float hs = s * 0.5;
 float cs = s * 0.1;
 float angle = (int)random(4) * HALF_PI;
 int b = (int)random(7);
 push();
 translate(x, y);
 rotate(angle);
 if (b == 0) {
   for (int i = 0; i < 4; i ++) {
     rotate(HALF_PI);
     line(cs, cs, hs, hs);
   }
   circle(0, 0, cs);
 } else if (b == 1) {
   circle(0, 0, cs);

   line(0, cs, 0, hs);

   noFill();
   arc(0, 0, hs, hs, radians(110), TAU + radians(70));
 } else if (b == 2) {
   circle(0, 0, cs);

   noFill();
   beginShape();
   vertex(0, hs);
   vertex(0, hs/2);
   vertex(hs/2, 0);
   vertex(0, -hs/2);
   vertex(-hs/2, 0);
   vertex(-cs, 0);
   endShape();
 } else if (b == 3) {
   line(-hs + cs, -hs, hs, hs - cs);
   line(-hs, -hs + cs, hs - cs, hs);

   circle(hs/2*cos(-PI/4), hs/2*sin(-PI/4), cs);

   noFill();
   arc(0, 0, hs, hs, - radians(25), TAU - radians(65));
 } else if (b == 4) {
   circle(-hs/2, 0, cs);
   circle(hs/2, 0, cs);

   noFill();
   arc(-hs/2, 0, hs, hs, -PI, 0);
   arc(hs/2, 0, hs, hs, 0, PI);
 } else if (b == 5) {
   for (float i = -hs + s/5; i < hs; i += s/5) {
     float l = random(-hs+cs);
     line(i, hs, i, l);
     circle(i, l, cs);
   }
 } else {
   float ss = hs * 0.5;
   float sss = ss - cs;
   for (int i = 0; i < 4; i ++) {
     rotate(HALF_PI);
     line(-ss + cs, -ss, ss - cs, -ss);
     circle(-ss, -ss, cs);
   }
   line(-sss, -sss, sss, sss);
   line(sss, -sss, -sss, sss);
 }
 pop();
}


void mousePressed() {
 redraw();
}

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

線と点でどんな形が描けるかの追求。
並べる際に色が白黒、交互になるようにした。
tile()の中のcountが偶数か奇数で変化が起きる。偶数の場合は縦の列ごとに変わる。これは考えてなかったけど面白い。むしろ考えていなかったから面白い。

自分で一から作ってもcommand + rを押した時に意外なものが生まれるのがジェネラティブアートの魅力の一つ。

Happy coding!!

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