Auto Generated Circlesをつくりました
Auto Generated Circlesをつくりました。ジェネレーティブアートです。ランダムな円を300個を重ねました。色のblendModeをDIFFERENCEにして重ねたら、おもしろい雰囲気になりました。
以下はソースコードです。開発環境はProcessingです。
// Circles import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; final boolean cSAVE_FLG = false; final int cSAVE_NUM = 20; final int cSTART_NUM = 60; final int cDIGIT_NUM = 2; //// For Logo image size //final int cMyWidth = 350; //final int cMyHeight = 350; //final String cFILE_NAME = "Circles_Logo_"; //// For Featured image size //final int cMyWidth = 600; //final int cMyHeight = 400; //final String cFILE_NAME = "Circles_Featured_"; //// For Banner image size //final int cMyWidth = 1400; //final int cMyHeight = 400; //final String cFILE_NAME = "Circles_Banner_"; // For HD final int cMyWidth = 1280; final int cMyHeight = 720; final String cFILE_NAME = "Circles_"; //// For Full HD //final int cMyWidth = 1920; //final int cMyHeight = 1080; //final String cFILE_NAME = "Circles_"; //// For Test //final int cMyWidth = 800; //final int cMyHeight = 450; //final String cFILE_NAME = "Circles_"; final boolean cLOOP_FLG = true; final float cFRAME_RATE = 0.3; void settings() { size(cMyWidth, cMyHeight); } void setup() { background(255); noStroke(); blendMode(DIFFERENCE); 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() { final int n = 300; int diameter; int i; for(i = 0; i < n; i++) { fill(int(random(360)), int(random(360)), int(random(360))); diameter = int(random(height)); ellipse(int(random(width)), int(random(height)), diameter, diameter); } fill(255); rect(0, 0, width, height); }