前回の内側に向かって透過する三〇六輪の逆で、外側に向かって透過度を上げました。薄い色がぼやけ過ぎてますが。試行錯誤として。
コードは以下。前回とほぼ同じ。描画するHSBとアルファチャネルを決定するところのアルファチャネルのところだけが違う。
//
// 初期値
//
// 輪の個数(5行x4個)
int maxY = 5;
int maxX = 4;
// 輪の直径、間隔
float diaFO = 72;
// 同心円の個数
int num[][] = { {12,12,12,12}, {12,12,12,12}, {12,18,18,18}, {18,18,18,18}, {18,18,18,18} };
// 各円のHSB
float valH[][] = { {80,0,54,326}, {292,326,40,0}, {120,10,192,52},
{203,50,330,170}, {196,24,52,327} };
float valS[][] = { {100,100,26,100}, {100,100,100,100},
{100,100,80,24},{100,100,13,100}, {11,100,100,100} };
float valB[][] = { {76,99,95,96}, {34,100,100,60}, {50,100,92,88},
{80,73,95,64}, {91,100,100,65} };
// 描画ウィンドウサイズ用
int szx,szy;
//
// 描画ウィンドウサイズを決定する
//
void settings() {
szx = int(diaFO*maxX*2+diaFO) ;
szy =int(diaFO*maxY*2+diaFO);
size(szx, szy);
}
//
// メイン
//
void setup() {
float axisX, axisY, wd;
colorMode(HSB,360,100,100,100);
background(0,0,92,100);
translate(-1*diaFO/2,-1*diaFO/2); // 座標軸を半径分マイナスする
noFill();
axisY = 0;
// 行への対応
for (int itrY = 0; itrY < maxY; itrY++) {
axisX = 0;
axisY = axisY + diaFO*2;
// 列への対応
for (int itrX = 0; itrX < maxX; itrX++) {
axisX = axisX + diaFO*2;
strokeWeight(diaFO/num[itrY][itrX]/2); // 線の太さは半径÷同心円の数
wd = diaFO; // 外側の円から描く
// 同心円の個数分行う
for (int itrNum = 1; itrNum <= num[itrY][itrX]; itrNum++) {
// 描画するHSBとアルファチャネルを決定
stroke(valH[itrY][itrX],valS[itrY][itrX],valB[itrY][itrX],(100/num[itrY][itrX])*itrNum);
ellipse(axisX,axisY,wd,wd); // 円を描く
// 次の同心円の直径を計算する
wd = diaFO * (num[itrY][itrX]-itrNum)/num[itrY][itrX];
}
}
}
// filter(BLUR,2);
save ("306rin-011" + ".png");
}
下から3行目、コメントアウトしてますが、ブラーフィルターをかけたものとの比較は以下。小さいとわかりにくいですが。
BLURなし
BLURあり