見出し画像

generativeart_033

// 作品概要:
// 色が重なる動画
// (C)2023 sakuzo_arts

// Global変数
String APPNAME = "generativeart_033";
float CIRCLE_X;          // 円の中心の座標X
float CIRCLE_Y;          // 円の中心の座標Y
float CIRCLE_DIAMETER;   // 円の幅

color COLOR_R;
color COLOR_G;
color COLOR_B;

int CIRCLE_R_X;
int CIRCLE_R_Y;
int CIRCLE_G_X;
int CIRCLE_G_Y;
int CIRCLE_B_X;
int CIRCLE_B_Y;
int SPEED_R;
int SPEED_G;
int SPEED_B;


// セットアップ
void setup() {
  blendMode(SCREEN);
  size(800, 800);
  frameRate(60);
  
  CIRCLE_DIAMETER = 500;
  
  CIRCLE_R_X = 0;
  CIRCLE_G_X = 0;
  CIRCLE_B_X = 0;
  
  CIRCLE_R_Y = height / 2;
  CIRCLE_G_Y = height / 2;
  CIRCLE_B_Y = height / 2;
  
  SPEED_R = 5;
  SPEED_G = 4;
  SPEED_B = 3;

  COLOR_R = color(255,   0,   0, 255);
  COLOR_G = color(  0, 255,   0, 255);
  COLOR_B = color(  0,   0, 255, 255);
  
}

// 描画
void draw() {
  // 背景色設定
  background(0);
  noFill();
  noStroke();
  
  CIRCLE_R_X = CIRCLE_R_X + SPEED_R;
  CIRCLE_G_X = CIRCLE_G_X + SPEED_G;
  CIRCLE_B_X = CIRCLE_B_X + SPEED_B;
  
  // 描画処理
  fill(COLOR_R);
  circle(CIRCLE_R_X, CIRCLE_R_Y, CIRCLE_DIAMETER);
  if(CIRCLE_R_X > width){
    SPEED_R = -5;
  } else if(CIRCLE_R_X < 0){
    SPEED_R = +5;
  }
 
  fill(COLOR_G);
  circle(CIRCLE_G_X, CIRCLE_G_Y, CIRCLE_DIAMETER);
  if(CIRCLE_G_X > width){
    SPEED_G = -4;
  } else if(CIRCLE_G_X < 0){
    SPEED_G = +4;
  }
 
  fill(COLOR_B);
  circle(CIRCLE_B_X, CIRCLE_B_Y, CIRCLE_DIAMETER);
  if(CIRCLE_B_X > width){
    SPEED_B = -3;
  } else if(CIRCLE_B_X < 0){
    SPEED_B = +3;
  }

  // フッター表示
  drawFooter();
  
  saveFrame("frames/####.png");
  if (frameCount >= 600) {
    exit();
  }
}


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

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

  // 作品名
  textAlign(LEFT, BOTTOM);
  textSize(20);
  fill(255);
  text(APPNAME, 30, height - 10);
  
  // 著作権表示
  textAlign(RIGHT, BOTTOM);
  textSize(20);
  fill(255);
  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");
  }
}

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