色を16進数表記でpalette的に扱う(Processing)

processingで何に悩むかと言ったら、配色である。 ど素人の私はセンスのいい配色なぞ、RGBの数値とにらめっこしていても出るはずもないことがわかっている。

coolors.co

そんなわけで個々のサイトを使う。 素晴らしい配色を作ってくれるサイトです。 このような画面があると思うので、ここからexportでcodeを選択すると#付の16進数表記がもらえる。 上記の画像のようにコピペする。

#70d6ff, #ff70a6, #ff9770, #ffd670, #e9ff70

となる。

これを用いて、color型の配列に入れてpalette的に扱ってみようと思う。

final color palette[]={#70d6ff, #ff70a6, #ff9770, #ffd670, #e9ff70};

のように先頭に宣言して配列的に扱うことで配列の成分(ここでは0~4)で選ぶことができる。 下がサンプルコードと生成結果である。

import java.util.Calendar;
  
  int windowWidth=1600;
  int windowHeight=900;
 final color palette[]={#70d6ff, #ff70a6, #ff9770, #ffd670, #e9ff70};
void setup() { 
  surface.setResizable(true);
  surface.setSize(windowWidth, windowHeight);
  background(255);
  noLoop();
  surface.setResizable(false);
}

void draw(){
 background(255);
 for(int i=0;i<1000;i++){
  noStroke();
  fill(palette[int(random(0,5))]);
  float x=random(0,width);
  float y=random(0,height);
  rect(x,y,100,100);
 }
}

void keyPressed() {
  if (key == 's') saveFrame(timestamp()+".png");
}

String timestamp() {
  Calendar now = Calendar.getInstance();
  return String.format("%1$ty_%1$tm_%1$td_%1$tH_%1$tM_%1$tS",now);
}