2023年2月7日火曜日

バナーイメージ

ノストラダムスからの続き

Damusのホームページでは,iPhoneクライアントが出るまで待ち行列に並べと書いてある。そのわりには,App Storeから簡単にDamusがインストールできて登録も完了した。

デフォルトのバナーとロボットアイコンはいやなので,変更するにはどうすればよいか調べると,設定画面から各画像のURLへのリンクを張ればよかった。自分のアイコンは,Twitterの10年くらい前の顔写真を流用する。バナーの方は bloggerのものを使おうとしたが,模様が薄くて単なるホワイトにみえるので改めて自作することにした。

画像なのでProcessingを使う。適当なサンプルを探してきて編集する。ChatGPTにもきいてみたのだけれど,エラーの理由がいまいちわからなくてあきらめた。void setup()は初期化のために1度だけ,void draw() はデフォルトでは繰り返し実行される。これで困る場合は,setup()にnoLoop()を入れればよい。setup中の最初に置くことになっているsizeコマンドの引数は数値でなければならなかった。このあたりが最初のつまづきポイント。

背景のグラデーションは,あとでGraphicConverter側でもっと調整できるかと思ったけれど,あまり思うようには設定できないので,プログラム側で努力することにした。

メインのルーチンであるネットワークの描画だけれど,乱数点をランダムに結んだだけでは,見栄えがよくないので次のようにした。(1) 選んだ2点を結ぶ線分の長さが一定以上のものは排除する。(2) ランダムな点で既存点との距離が近すぎるものはダミー点に置き換えてしまい(1)から使わないようにしてしまう。

これで得られたのが,現在のblogspotで使っているバナーである。サイズは750x250ピクセルとした。
int np = 600;
int[] x = new int[np+1];
int[] y = new int[np+1];
int[] c = new int[np+1];

void setup() {
  size(960, 480);
  int a0 = 30;
  int c1 = 180; 
  int c2 = 215;
  int c3 = 240; 
  for(int k = 0; k < height/a0; k++){
      noStroke();
      c1=c1+5;
      c2=c2+2;
      c3=c3+1;
      fill(c1,c2,c3);
      rect(0,a0*k, width,a0*(k+1));
  }
  noLoop();
  for (int i = 0; i < np+1; i++) {
    x[i] = (int) random(50, width-50);
    y[i] = (int) random(50, height-50);
    c[i] = (int) random(230, 250);
    for (int j = 0; j < i; j++) {
      float r = sqrt(sq(x[i]-x[j])+sq(y[i]-y[j]));
      if(r < 30) {
        x[i] = -200;
        y[i] = -200;
      }
    }
    fill(150,250,250);
    arc(x[i],y[i],2,2,0,2*PI);
  }
}

void draw(){
  for (int k = 0; k < np*1000; k++) {
    int i = (k + (int) random(0, np)) % np + 1;
    int j = (k + (int) random(0, np)) % np + 1;
    int l = (k + (int) random(0, np)) % np + 1;
      stroke(c[l], c[l], c[l]);
      if(sq(x[i]-x[j]) + sq(y[i]-y[j]) < 4000) {
          line(x[i], y[i], x[j], y[j]);
      }
  }
}


図:ネットワークをイメージした薄味のバナー

0 件のコメント: