見出し画像

generativeart_035

// 作品概要:
// テクスチャーアートを模倣
// (C)2023 sakuzo_arts

// Global変数
String APPNAME = "generativeart_035";

// セットアップ
void setup() {
  size(800, 800);
  noLoop();
}

// 描画
void draw() {
  // 背景色設定
  background(240);
  noFill();
  noStroke();
  
  // 描画処理
  drawpPttern(200, 200);
  
  // フッター表示
  drawFooter();
}

// 円をを描画する関数
void drawpPttern(int RECT_W, int RECT_H){
  
  for(int RECT_Y = -RECT_H; RECT_Y < height + RECT_H; RECT_Y = RECT_Y + RECT_H){
    for(int RECT_X = -RECT_W; RECT_X < width + RECT_W; RECT_X = RECT_X + RECT_W){
      for(float ARC_R = 100; ARC_R < RECT_H * 1.6; ARC_R = ARC_R + 20){
        println("ARC_R = " + ARC_R);
        
        // 円弧を描画
        float ARC_X = RECT_X;
        float ARC_Y = RECT_Y + RECT_H;
        
        if(ARC_R % 40 == 0){
          stroke(255, 255, random(255));
        }else{
          stroke(random(0, 128));
        }
        noFill();
        strokeWeight(10);
        arc(ARC_X, ARC_Y, ARC_R, ARC_R, radians(90), radians(90 + 90));
        arc(ARC_X, ARC_Y, ARC_R, ARC_R, radians(270), radians(270 + 90));
      }

      // 四角形を描画
      noFill();
      stroke(245, 245, 220);
      strokeWeight(20);
      rect(RECT_X, RECT_Y, RECT_W, RECT_H);
    }
  }

}


// フッターを表示する関数
void drawFooter(){
  // 長方形の描画方法をデフォルトに戻す
  rectMode(CORNER);

  // 長方形を背景として描画する
  noStroke();
  fill(255, 255, 255, 192);
  rect(0, height - 45, width, 45);

  // 作品名
  textAlign(LEFT, BOTTOM);
  textSize(20);
  fill(64);
  text(APPNAME, 30, height - 10);
  
  // 著作権表示
  textAlign(RIGHT, BOTTOM);
  textSize(20);
  fill(64);
  text("(C)2023 sakuzo_arts", width - 30, height - 10);
}

// キー操作でイベントを実行する関数
void keyPressed(){
  // スペースキーを押下で再描画
  if(key == ' '){
    redraw();
  }
  
  // Shift+sキーを押下で画像保存
  if(key == 'S'){
    int Y = year();
    int M = month();
    int D = day();
    int h = hour();
    int m = minute();
    int s = second();
    String FILENAME = APPNAME + "-" + Y + nf(M, 2) + nf(D, 2) + nf(h, 2) + nf(m, 2) + nf(s, 2);
    saveFrame(FILENAME + ".png");
  }
}


この記事が気に入ったらサポートをしてみませんか?