![見出し画像](https://assets.st-note.com/production/uploads/images/97342396/rectangle_large_type_2_2af9f646ac1891db1bb9c16f5e2827ce.png?width=800)
generativeart_030
![](https://assets.st-note.com/img/1675610883222-sbevloEYNY.png?width=800)
// 作品概要:
// うにがいっぱい
// (C)2023 sakuzo_arts
// Global変数
String APPNAME = "generativeart_030";
float CIRCLE_CENTER_X; // 円の中心の座標X
float CIRCLE_CENTER_Y; // 円の中心の座標Y
int LINES_NUM; // 行数
// セットアップ
void setup() {
size(800, 800);
noLoop();
background(255);
}
// 描画
void draw() {
LINES_NUM = 30;
drawCircle(LINES_NUM);
drawFooter();
}
// 円をを描画する関数
void drawCircle(int LINES_NUM){
// 背景色設定
background(255);
noStroke();
noFill();
// 円の直径を設定
float CIRCLE_DIAMETER = height / LINES_NUM;
// 円を描画する始点を設定
CIRCLE_CENTER_X = 0;
CIRCLE_CENTER_Y = CIRCLE_DIAMETER;
for(int i = 0; i < width + 20; i = i + LINES_NUM + 50){
CIRCLE_CENTER_X = i;
for(int j = 0; j < height + 20; j = j + LINES_NUM + 50){
CIRCLE_CENTER_Y = j;
// 胴体:とげ
for(int k = 0; k < 180; k = k + int(random(10, 20))){
// 線の色を指定する処理
stroke(getColor());
// 線の太さを指定する
strokeWeight(2);
// 描画する線の座標を計算する
float R = CIRCLE_DIAMETER + random(-5, 5);
float X1 = CIRCLE_CENTER_X + (R * cos(radians(k)));
float Y1 = CIRCLE_CENTER_Y + (R * sin(radians(k)));
float X2 = CIRCLE_CENTER_X + (R * cos(radians(k) + PI));
float Y2 = CIRCLE_CENTER_Y + (R * sin(radians(k) + PI));
// 線を描画する
line(X1, Y1, X2, Y2);
}
// 胴体
fill(getColor());
noStroke();
circle(CIRCLE_CENTER_X, CIRCLE_CENTER_Y, 32);
circle(CIRCLE_CENTER_X, CIRCLE_CENTER_Y, 32);
// 目玉:白目
fill(255);
circle(CIRCLE_CENTER_X - 5, CIRCLE_CENTER_Y + random(-3, 3), 10);
circle(CIRCLE_CENTER_X + 5, CIRCLE_CENTER_Y + random(-3, 3), 10);
// 目玉:黒目
fill(0);
circle(CIRCLE_CENTER_X - random(3, 7), CIRCLE_CENTER_Y + random(-1, 1), 3);
circle(CIRCLE_CENTER_X + random(3, 7), CIRCLE_CENTER_Y + random(-1, 1), 3);
}
}
}
// 色を設定する関数
color getColor(){
float COLOR_R = 128;
float COLOR_G = 0;
float COLOR_B = 128;
float COLOR_A = 255;
color COLOR_RGBA = color(COLOR_R, COLOR_G, COLOR_B, COLOR_A);
return COLOR_RGBA;
}
// フッターを表示する関数
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");
}
}
この記事が気に入ったらサポートをしてみませんか?