Auto Generated Gridをつくりました
Auto Generated Gridをつくりました。ジェネレーティブアートです。中心位置から、上下左右のいずれか一方向に罫線を引くことを繰り返しています。線の色は一定の確率で変更されるようにしました。
以下はソースコードです。開発環境はMacBook Air、Processingです。
// Grid import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; final boolean cSAVE_FLG = false; final int cSAVE_NUM = 1; final int cSTART_NUM = 0; final int cDIGIT_NUM = 2; //// For Logo image size //final int cMyWidth = 350; //final int cMyHeight = 350; //final String cFILE_NAME = "Grid_Logo_"; //// For Featured image size //final int cMyWidth = 600; //final int cMyHeight = 400; //final String cFILE_NAME = "Grid_Featured_"; //// For Banner image size //final int cMyWidth = 1400; //final int cMyHeight = 400; //final String cFILE_NAME = "Grid_Banner_"; // For HD final int cMyWidth = 1280; final int cMyHeight = 720; final String cFILE_NAME = "Grid_"; //// For Full HD //final int cMyWidth = 1920; //final int cMyHeight = 1080; //final String cFILE_NAME = "Grid_"; //// For Test //final int cMyWidth = 800; //final int cMyHeight = 450; //final String cFILE_NAME = "Grid_"; final boolean cLOOP_FLG = true; final float cFRAME_RATE = 0.3; void settings() { size(cMyWidth, cMyHeight); } void setup() { if (cSAVE_FLG) { noLoop(); } else if (cLOOP_FLG) { frameRate(cFRAME_RATE); } else { noLoop(); } } void draw() { int loopMax = 1; if (cSAVE_FLG) { loopMax = cSAVE_NUM; } for (int i = 0; i < loopMax; i++) { myDraw(); if (cSAVE_FLG) { LocalDateTime utcDateTime = LocalDateTime.now(ZoneId.of("UTC")); DateTimeFormatter dateFrmt = DateTimeFormatter.ofPattern("uuuuMMdd"); DateTimeFormatter timeFrmt = DateTimeFormatter.ofPattern("HHmmss,SSSSSS"); String dateStr = dateFrmt.format(utcDateTime); String timeStr = timeFrmt.format(utcDateTime); //println(cFILE_NAME + nf(cSTART_NUM + i, cDIGIT_NUM) // + "_" + dateStr + "T" + timeStr + "Z" + ".png"); save(cFILE_NAME + nf(cSTART_NUM + i, cDIGIT_NUM) + "_" + dateStr + "T" + timeStr + "Z" + ".png"); } } } void myDraw() { int i; int x = (width - 1) / 2; int y = (height - 1) / 2; int gridUnit = width / 20 - 2; int hRndMax = 19; colorMode(HSB, hRndMax - 1, 100, 100); stroke(int(random(hRndMax)), 50, 100); strokeWeight(3); strokeCap(ROUND); background(0); for(i=0; i < 770; i++) { switch(int(random(4))) { case 0: if (y >= 0) { if(int(random(10)) == 0) { stroke(int(random(hRndMax)), 50, 100); } line(x, y, x, y - gridUnit); y -= gridUnit; } else { i--; } break; case 1: if (x >= 0) { if(int(random(10)) == 0) { stroke(int(random(hRndMax)), 50, 100); } line(x, y, x - gridUnit, y); x -= gridUnit; } else { i--; } break; case 2: if (y <= height) { if(int(random(10)) == 0) { stroke(int(random(hRndMax)), 50, 100); } line(x, y, x, y + gridUnit); y += gridUnit; } else { i--; } break; case 3: if (x <= width) { if(int(random(10)) == 0) { stroke(int(random(hRndMax)), 50, 100); } line(x, y, x + gridUnit, y); x += gridUnit; } else { i--; } break; } } }