コエンザイムのブログ

ジェネレーティブアートが好きです

Auto Generated Circlesをつくりました

Auto Generated Circlesをつくりました。ジェネレーティブアートです。ランダムな円を300個を重ねました。色のblendModeをDIFFERENCEにして重ねたら、おもしろい雰囲気になりました。

opensea.io

以下はソースコードです。開発環境は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);
}