見出し画像

Generative Art #125

Code

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

void draw() {
  hexTile();
  powder();
}

void powder() {
  for (int i = 0; i < 500000; i ++) {
    stroke(255, 60);
    strokeWeight(0.4);
    point(random(width), random(height));
  }
}

void hexTile() {
  int c = 10;
  float s = width/c;
  for (int i = 0; i <= c * 1.5; i += 1) {
    for (int j = 0; j <= c; j ++) {
      hexagon(j * s * 1.5, i * s * cos(radians(30)), s);
    }
    for (int j = 0; j <= c; j ++) {
      hexagon((j * s * 1.5) + s * 0.75, i * s * cos(radians(30)) +  s * cos(radians(30))/2, s);
    }
  }
}

void hexagon(float x, float y, float s) {
  push();
  translate(x, y);
  rotate((PI/3) * (int)random(6));
  beginShape();
  noStroke();
  fill(getCol());
  for (float a = 0; a < TAU; a += TAU/6) {
    float x_  = s/2 * cos(a);
    float y_  = s/2 * sin(a);
    vertex(x_, y_);
  }
  endShape();
  pattern(s);
  pop();
}

void pattern(float s) {
  float r = random(1);
  noStroke();
  fill(getCol());

  if (r > 6.0 / 7.0) {
    circle(0, 0, s * 0.7);
  } else if (r > 5.0 / 7.0) {
    beginShape();
    vertex(0, 0);
    vertex(s/2, 0);
    vertex(s/2 * cos(radians(60)), s/2 * sin(radians(60)));
    vertex(s/2 * cos(radians(120)), s/2 * sin(radians(120)));
    vertex(-s/2, 0);
    endShape();
  } else if (r > 4.0 / 7.0) {
    float len = s * 0.30;
    stroke(getCol());
    strokeWeight(s * 0.1);
    line(-len, 0, len, 0);
    rotate(radians(90));
    line(-len, 0, len, 0);
  } else if (r > 3.0 / 7.0) {
    rect(0, 0, s*0.5, s*cos(radians(30)));
  } else if (r > 2.0 / 7.0) {
    beginShape();
    vertex(0, 0);
    vertex(s/2, 0);
    vertex(s/2 * cos(radians(60)), s/2 * sin(radians(60)));
    endShape();
  } else if(r > 1.0 / 7.0){
    for (int i = 0; i < 3; i ++) {
      beginShape();
      vertex(0, 0);
      vertex(s/2, 0);
      vertex((s/2 + 1) * cos(radians(60)), (s/2 + 1) * sin(radians(60)));
      endShape();
      rotate(radians(120));
      println(2.0/ 6.0);
    }
  }
  else{
    circle(0, 0, s*0.8);
    fill(getCol());
    circle(0, 0, s*0.5);
    fill(getCol());
    circle(0, 0, s*0.2);
  }
}

void mousePressed() {
  redraw();
}

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

int[] colors = {#98c1d9, #6969b3, #533a7b, #4b244a, #25171a, #E5B027};
int getCol() {
  return colors[(int)random(colors.length)];
}

六角形をタイリング。偶数列と奇数列でy座標をずらして並べた。
あとは六角形の中身に色んな形を描画。
これは中身を変えて無限に遊べるシリーズ。

色は補色を意識して作ったよ。補色はなぜかいい感じになるよ。不思議だね!

Happy coding!!!


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