見出し画像

generativeart_021

// 作品概要:
// ネオンのように光る四角形

// Global変数
String APPNAME = "generativeart_021";
float RECTANGLE_X;       // 四角形の始点(左上)の座標X
float RECTANGLE_Y;       // 四角形の始点(左上)の座標Y
float RECTANGLE_WIDTH;   // 四角形の幅
float RECTANGLE_HEIGHT;  // 四角形の高さ
int DRAW_NUMBER;         // 描画する多角形の数

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

// 描画
void draw() {
  pushMatrix();
  DRAW_NUMBER = 30;
  drawRectangle(DRAW_NUMBER);
  popMatrix();
  copyright();
}

// 指定した数の四角形を描画する関数
void drawRectangle(int DRAW_NUMBER){
  background(0);
  noStroke();
  noFill();
  
  // キャンバスの中心を移動する
  translate(width / 2, height / 2);
  
  // 放射点を決める
  RECTANGLE_X = random(-5, 5);
  RECTANGLE_Y = random(-5, 5);
  
  // 四角形を放射状の描画をする
  for (int i = 0; i < DRAW_NUMBER; i++) {
    RECTANGLE_WIDTH = random(20, 30) * i;
    RECTANGLE_HEIGHT = RECTANGLE_WIDTH;
    rotate(radians(random(180)));
    strokeCap(ROUND);
    strokeJoin(ROUND);
    for (int j = 1; j < 10; j++) {
      strokeWeight(j * random(0, 3));
      stroke(255, random(0, 128), random(129, 255) - j, random(129, 255));
      rect(RECTANGLE_X-(RECTANGLE_WIDTH/2), RECTANGLE_Y-(RECTANGLE_HEIGHT/2), RECTANGLE_WIDTH, RECTANGLE_HEIGHT);
    }
  }
}

// 色を設定する
color getColor(){
  
  float COLOR_R = 255;
  float COLOR_G = random(129, 255);
  float COLOR_B = random(0, 128);
  float COLOR_A = random(129, 255);
  color COLOR_RGBA = color(COLOR_R, COLOR_G, COLOR_B, COLOR_A);

  return COLOR_RGBA;
}

// 著作権を表示する関数
void copyright(){
  // 背景
  noStroke();
  fill(255, 255, 255, 192);
  rect(0, height - 45, width, 45);

  // 著作権表示
  String MESSAGE = "(C)2022 Sgr.Hataya";
  textAlign(CENTER, CENTER);
  textSize(25);
  fill(255);
  text(MESSAGE, width/2, height-30);
}

// キー操作でイベント実行
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");
  }
}

deconbatchさんのコードを参考にさせていただきました。


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