Creative Coding

三〇六輪試行錯誤09・等間隔の三〇六輪で表すソーシャルディスタンス

東京ではNO!!3密(密閉、密集、密接)ということですが、密集を三〇六輪で表して見ました。ベースとなるのは横18x縦17の306個の輪、一つの輪を人と見立てて、306人が等間隔で並んだ状態を上からみたときの図を考えました。輪の直径は26(円周81.64)で腹囲81cmの人とみなします。それぞれの人との腹囲あたりの間が例えば10cmと想定したら間隔は10にする、という感じで、そこそこ過密な電車内(腹あたりで前後10cm〜もっと過密?)、映画館(腹あたりで横20cm縦70cm)、オフィス内(100x70cmの机で皆同じ方向を見ていたとして、横74cm縦140cm)、そして最近言われているソーシャルディスタンス(180cmの間隔を保とう)でやってみました。

画像は、左から過密な電車、映画館、オフィス、ソーシャルディスタンス。クリックで拡大します。
コードは画像の下。

※この記事は、7月までに三〇六輪100個作る企画の第9弾です。

//
// 初期値
//
// 輪の直径、間隔
float dia = 26;        // 腹囲81センチ程度
float spX = 74;        // ここを任意に変更(横の間隔)
float spY = 140;       // ここを任意に変更(縦の間隔)
// 輪の個数(17行x18個)
int maxY = 17;
int maxX = 18;


//
// 描画ウィンドウサイズを決定する
//
void settings() {
  int szx = int(dia+spX) * maxX + int(spX);
  int szy =int(dia+spY)*maxY + int(spY);
  size(szx, szy);
}

//
// メイン処理
//
void setup() {
  float axisX, axisY, vara;
  colorMode(HSB,360,100,100,100);
  background(0,0,100,100);
  noFill();  
  for (int itrY = 1; itrY <= 17; itrY++) {
    strokeWeight(5);         // 線の太さ5(洋服分 笑)
    axisY = (spY + dia) * (itrY - 1) + spY + dia/2;
    vara = 100/17 * (17-itrY+1);    // 縦方向にアルファチャンネルを変化させ透明度をつける
    for (int itrX = 1; itrX <= 18; itrX++) {
      axisX = (spX + dia) * (itrX - 1) + spX + dia/2;  
      stroke(360/18*itrX,100,100,vara);  // 横方向に色相を変化させる
      ellipse(axisX,axisY,dia,dia);
    }
  }
  save ("306rin_009_" + str(int(spX))+ "_" + str(int(spY)) + ".png");
}

306人がソーシャルディスタンスを保つには3888×3682平方cm必要らしい(1400平米超)。仮にですが、100平米のお家が10軒…