generativeart_022
// 作品概要:
// 広がる四角形
// Global変数
String APPNAME = "generativeart_022";
float RECTANGLE_X; // 四角形の始点(左上)の座標X
float RECTANGLE_Y; // 四角形の始点(左上)の座標Y
float RECTANGLE_WIDTH; // 四角形の幅
float RECTANGLE_HEIGHT; // 四角形の高さ
float LINE_START_X; // 中心から伸びる線の始点座標X
float LINE_START_Y; // 中心から伸びる線の始点座標X
int DRAW_NUMBER; // 描画する多角形の数
// セットアップ
void setup() {
size(800, 800);
noLoop();
background(255);
}
// 描画
void draw() {
pushMatrix();
DRAW_NUMBER = 60;
drawRectangle(DRAW_NUMBER);
popMatrix();
copyright();
}
// 指定した数の四角形を描画する関数
void drawRectangle(int DRAW_NUMBER){
background(255);
noStroke();
noFill();
float Center_X = width / 2 + 150;
float Center_Y = height / 2;
// キャンバスの中心座標を移動する
translate(Center_X, Center_Y);
// 長方形の描画方法を変更する
rectMode(CENTER);
// 放射点を決める
RECTANGLE_X = 0;
RECTANGLE_Y = 0;
LINE_START_X = 0;
LINE_START_Y = 0;
// 四角形を放射状の描画をする
for (int i = 0; i < DRAW_NUMBER; i++) {
RECTANGLE_WIDTH = random(20, 30) * i;
RECTANGLE_HEIGHT = RECTANGLE_WIDTH * 0.6;
strokeWeight(random(3, 5));
strokeCap(ROUND);
strokeJoin(ROUND);
stroke(getColor());
rect(RECTANGLE_X, RECTANGLE_Y, RECTANGLE_WIDTH, RECTANGLE_HEIGHT);
}
// 中心から長方形の頂点への線を描画する
strokeWeight(1);
stroke(getColor());
line(LINE_START_X, LINE_START_Y, (-width + LINE_START_X)/0.6, -height);
line(LINE_START_X, LINE_START_Y, (+width + LINE_START_X)/0.6, -height);
line(LINE_START_X, LINE_START_Y, (-width + LINE_START_X)/0.6, +height);
line(LINE_START_X, LINE_START_Y, (+width + LINE_START_X)/0.6, +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();
// 長方形の描画方法をデフォルトに戻す
rectMode(CORNER);
fill(255, 255, 255, 192);
rect(0, height - 45, width, 45);
// 著作権表示
String MESSAGE = "(C)2023 Sgr.Hataya";
textAlign(CENTER, CENTER);
textSize(25);
fill(64);
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");
}
}
この記事が気に入ったらサポートをしてみませんか?