OneHourProcessing 二日目
二日目の作品
今日作った作品はこちら
#OneHourProcessing#Processing
— 霜暮黒夢@V高専生 (@V_hero_aid) August 5, 2020
二日目の作品です
水槽に広がるインクの染みを表現しました(?)
作るのにかかった時間は「57分30秒」 pic.twitter.com/gm6mW8OEb1
作るのにかかった時間は「57分30秒」。
コードは以下の通りです。
Pixel[][] pixel; void setup() { size(800, 450); pixel = new Pixel[width][height]; for (int x = 0; x < width; x++) for (int y = 0; y < height; y++) pixel[x][y] = new Pixel(color(255)); } void draw() { if (mousePressed && mouseButton == LEFT) pixel[mouseX][mouseY].now_color = color(0); for (int x = 0; x < width; x++) for (int y = 0; y < height; y++) { int left = x - 1; int right = x + 1; int up = y - 1; int down = y + 1; if (left == -1) left++; if (right == width) right--; if (up == -1) up++; if (down == height) down--; pixel[x][y].create(pixel[left][y], pixel[right][y], pixel[x][up], pixel[x][down]); } loadPixels(); for (int x = 0; x < width; x++) for (int y = 0; y < height; y++) pixels[x + y * width] = pixel[x][y].update(); updatePixels(); } class Pixel { color now_color; color next_color; Pixel(color default_color) { now_color = default_color; next_color = default_color; } /**** 周りの色を平均して次の色を決める関数 ****/ void create(Pixel left, Pixel right, Pixel up, Pixel down) { float red = ( red(up.now_color) + red(down.now_color) + red(left.now_color) + red(right.now_color)) / 4; float green = (green(up.now_color) + green(down.now_color) + green(left.now_color) + green(right.now_color)) / 4; float blue = ( blue(up.now_color) + blue(down.now_color) + blue(left.now_color) + blue(right.now_color)) / 4; red = ( red + red(now_color)) / 2; green = (green + green(now_color)) / 2; blue = ( blue + blue(now_color)) / 2; next_color = color(red, green, blue); } /**** 色を更新する関数 ****/ color update() { now_color = next_color; return now_color; } }