前の記事では、ダミアン・ハーストの4×5のスポットペインティングをProcessingで作ってみました。それを応用して、1スポットを同心円にして三〇六輪を作ってみました。なお、306は20で割れないので、各スポットは同じ数の同心円ではなく、全体で306個の輪になってます。
ポイント
- サイズや色は同じ。
- 同心円は、12同心円が9個と18同心円が11個、都合、輪が306個。
- 円を描く線の太さは半径÷同心円の数に(12同心円だと3、18同心円だと2になる)補足参照。
- 内側の円のサイズは同心円の個数で按分して小さくしていく(試行錯誤05記事、08記事で試した方法と同様)。
- 同心円は内側に向かうにしたがって透過度を増すように。
- 円の描画はfor文で行いたいため、同心円の個数やHSBの各値は5行x4列の配列に初期値として設定しておくことに。
- 座標軸を半径分マイナスしておく。以降の描画時に直径x2を加算して行けるように
コードは以下。
//
// 初期値
//
// 輪の個数(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-(itrNum-1)*100/num[itrY][itrX]));
ellipse(axisX,axisY,wd,wd); // 円を描く
// 次の同心円の直径を計算する
wd = diaFO * (num[itrY][itrX]-itrNum)/num[itrY][itrX];
}
}
}
save ("306rin-011" + ".png");
}
ちなみに、ダミアン・ハーストのスポットペインティングは1986年から制作されていて、どうも一年に換算すると60作品超のペースとのこと。手描きですよ。凄すぎる。このブログでは7月までに100個の306輪と言っていて今11個目、コードだったらもっと量産出来るはずなので、諦めずに続けようと思ってます。
補足:
同心円の線の太さを18個の同心円の場合の2に揃えるという整理もありますが、その場合、内側の円と円との間隔が開き過ぎたり、間隔が開かないようにすると中心のスペースが12同心円だと大きくなって全体のバランスが悪いので上記の考え方となりました。そもそも306にこだわるから揃わないのですが(苦笑)。