網格子風icon

あの部員のアイコンはprocessingで作られたものだった!?網格子に似せて作られてたアイコン画像

ダウンロード
float r = 50;

void setup() {
  size(400, 400);
  draw_icon();
  saveFrame("output-####.png");
}

void draw_icon() {
  background(255, 255, 255);
  stroke(0, 0, 200);
  strokeWeight(4);
  noFill();
  float piece_width =  2 * r * sin(PI/3);
  float piece_height = 2 * r * cos(PI/3) +2*r;
  for (float x = 0; x <  width + piece_width; x += piece_width) {
    for (float y = 0; y < height; y += piece_height) {
      piece(x, y);
      piece(x+piece_width/2, y+piece_height/2);
    }
  }
}

void piece(float x, float y) {
  float rc = r * cos(PI/3);
  float rs = r * sin(PI/3);
  float sr = r /12;
  float srt = sr * tan(PI/4);
  
  pushMatrix();
  translate(x, y);

  beginShape();
  vertex(0, 0);

  vertex(rs, rc);
  vertex(rs + srt, rc + sr);
  vertex(rs - srt, rc + 3*sr);
  vertex(rs + srt, rc + 5*sr);
  vertex(rs - srt, rc + 7*sr);
  vertex(rs + srt, rc + 9*sr);
  vertex(rs - srt, rc + 11*sr);
  vertex(rs, rc + 12*sr);

  vertex(0, r + 2*rc);

  vertex(-rs, rc + 12*sr);
  vertex(-rs - srt, rc + 11*sr);
  vertex(-rs + srt, rc + 9*sr);
  vertex(-rs - srt, rc + 7*sr);
  vertex(-rs + srt, rc + 5*sr);
  vertex(-rs - srt, rc + 3*sr);
  vertex(-rs + srt, rc + sr);
  vertex(-rs, rc);

  endShape(CLOSE);
  popMatrix();
}

made by sakata