見出し画像

Generative Art #136

Code

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

void draw() {
 background(255);
 generate();
 powder();
}

void generate() {
 for (int i = 0; i < 2000; i ++) {
   int b = (int)random(4);
   float x = random(width);
   float y = random(height);
   float size = random(5, 120);

   push();
   translate(x, y);
   rotate(random(TAU));
   fill(getCol(), 100);
   noStroke();
   if (b == 0) {
     shape1(size);
   } else if (b == 1) {
     shape2(size);
   } else if (b == 2) {
     square(0, 0, size);
   } else {
     circle(0, 0, size);
   }
   pop();
 }
}

void shape1(float s) {
 float hs = s/2;
 float[] rs = new float [16];
 for (int i = 0; i < rs.length; i ++) {
   rs[i] = random(s);
 }
 beginShape();
 vertex(-hs, -hs);
 bezierVertex(-rs[0]/2, -rs[1], rs[2]/2, -rs[3], hs, -hs);
 bezierVertex(rs[4], -rs[5]/2, rs[6], rs[7]/2, hs, hs);
 bezierVertex(rs[8]/2, rs[9], -rs[10]/2, rs[11], -hs, hs);
 bezierVertex(-rs[12], rs[13]/2, -rs[14], -rs[15]/2, -hs, -hs);
 endShape();
}

void shape2(float s) {
 float hs = s/2;
 float[] rs = new float [16];
 for (int i = 0; i < rs.length; i ++) {
   rs[i] = random(hs);
 }
 beginShape();
 vertex(0, -hs);
 bezierVertex(rs[0], -hs, hs, -rs[1], hs, 0);
 bezierVertex(hs, rs[2], rs[3], hs, 0, hs);
 bezierVertex(-rs[4], hs, -hs, rs[5], -hs, 0);
 bezierVertex(-hs, -rs[6], -hs, -rs[7], 0, -hs);
 endShape();
}

void powder() {
 for (int i = 0; i < 800000; i ++) {
   stroke(getCol(), 30);
   strokeWeight(0.6);
   point(random(width), random(height));
 }
}

void mousePressed() {
 redraw();
}

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

int[] colors = {#006e90, #f18f01, #adcad6, #99c24d, #41bbd9};
//int[] colors = {#5BC3EB, #ef5d60, #ec4067, #a01a7d, #311847};
int getCol() {
 return colors[(int)random(colors.length)];
}

Happy coding!

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