見出し画像

generativeart_032


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

// Global変数
String APPNAME = "generativeart_032";
float CIRCLE_X;          // 円の中心の座標X
float CIRCLE_Y;          // 円の中心の座標Y
float CIRCLE_WIDTH;      // 円の幅
float CIRCLE_HEIGHT;     // 円の高さ
float CIRCLE_START;      // 円弧の始点
float CIRCLE_END;        // 円弧の終点

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

// 描画
void draw() {
  // 背景色設定
  background(128);
  noFill();
  noStroke();
  
  // 座標情報を保存
  pushMatrix();

  // キャンバスの中心を移動する
  translate(width / 2, height / 2);
  
  // キャンバスを回転する
  rotate(radians(45));
  
  // 描画処理
  for(int i = 0; i < 4; i = i + 1){
    rotate(radians(90 * i));
    drawpPttern(0, 230, 180, 360);
  }
  
  // 保存していた座標情報を呼び出し
  popMatrix();

  // フッター表示
  drawFooter();
}

// 円をを描画する関数
void drawpPttern(float CIRCLE_X, float CIRCLE_Y, float CIRCLE_START_RADIAN, float CIRCLE_END_RADIAN){
  
  for(int i = 0; i < 50; i = i + 5){
    strokeWeight(3);
    stroke(255);
    CIRCLE_WIDTH = 10 * i;
    CIRCLE_HEIGHT = CIRCLE_WIDTH;
    CIRCLE_START = radians(CIRCLE_START_RADIAN);
    CIRCLE_END = radians(CIRCLE_END_RADIAN);
    arc(CIRCLE_X, CIRCLE_Y, CIRCLE_WIDTH, CIRCLE_HEIGHT, CIRCLE_START, CIRCLE_END);
    line(CIRCLE_X + (CIRCLE_WIDTH/2), CIRCLE_Y, CIRCLE_X + (CIRCLE_WIDTH/2), height);
    line(CIRCLE_X - (CIRCLE_WIDTH/2), CIRCLE_Y, CIRCLE_X - (CIRCLE_WIDTH/2), height);
  }

}


// フッターを表示する関数
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");
  }
}

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