見出し画像

Generative Art #127

Code

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

void draw() {
  translate(-10, -10);
  hexTile();
  powder();
}

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

void hexTile() {
  int c = 5;
  float s = width/c;
  for (int i = 0; i <= c + 1; i ++) {
    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) {
  float r = s*0.5 + 1;
  push();
  translate(x, y);
  for (int i = 0; i < 6; i ++) {
    noStroke();
    fill(getCol());
    beginShape();
    vertex(0, 0);
    vertex(r * cos(TAU/6), r * sin(TAU/6));
    vertex(r * cos(2 * TAU/6), r * sin( 2 * TAU/6));
    endShape();
    float y_ = (0 + s/2 * sin(TAU/6) + s/2 * sin( 2 * TAU/6))/3;
    pattern(0, y_, s/2);
    rotate(radians(60));
  }
  pop();
}

void pattern(float x, float y, float s) {
  float a = TAU/3;
  float ss = s * 0.3 - 1;
  push();
  translate(x, y);
  noStroke();
  fill(getCol());
  if (random(1) > 0.75) {
    circle(0, 0, s/2);
  } else if (random(1) > 0.50) {
    beginShape();
    vertex(ss * cos(radians(30) + a), ss * sin(radians(30) + a));
    vertex(ss * cos(radians(30) + a * 2), ss * sin(radians(30) + a * 2));
    vertex(ss * cos(radians(30) + a * 3), ss * sin( radians(30) + a * 3));
    endShape(CLOSE);
  } else if (random(1) > 0.25) {
    rotate(PI);
    beginShape();
    vertex(ss * cos(radians(30) + a), ss * sin(radians(30) + a));
    vertex(ss * cos(radians(30) + a * 2), ss * sin(radians(30) + a * 2));
    vertex(ss * cos(radians(30) + a * 3), ss * sin( radians(30) + a * 3));
    endShape(CLOSE);
  } else {
    stroke(getCol());
    strokeWeight(s*0.1);
    line(0, 0, ss * cos(radians(30) + a), ss * sin(radians(30) + a));
    line(0, 0, ss * cos(radians(30) + a * 2), ss * sin(radians(30) + a * 2));
    line(0, 0, ss * cos(radians(30) + a * 3), ss * sin( radians(30) + a * 3));
  }
  pop();
}

void mousePressed() {
  redraw();
}

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

int[] colors = {#ea7af4, #b43e8f, #6200b3, #3b0086, #55CE70};
int getCol() {
  return colors[(int)random(colors.length)];
}

この前六角形のタイリングを作ったので今度は三角形のタイリング。

最初は一から三角形を作ってならべてたのだが、いじってる時に僕は気付いてしまったのだッ!

六角形のなかに三角形が6つ並んでことにッ!

中身は4パターンをランダムに表示。

Happy coding!!

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