takashi42332007-05-16

Control->EmbeddingIteration

「for構文の中にもう一つfor構文を組み込む事ができるよ.」というコメントが添えられている.サンプルのプログラムもgrayの箱を作って,だんだん小さくしながら箱の色も暗くしていっているという内容です.実行すると,最初の画像が表示されるが,これは美しくない感じがするのですこしプログラムを改造した物も下にのせておく.rectメソッドが右上の位置を指定するという仕様だから仕方ないとは思うけど.

EmbeddingIteration

float box_size = 11; 
float box_space = 12; 
int margin = 7; 
 
size(200, 200); 
background(0); 
noStroke(); 
 
// 灰色の箱を描く 
for(int i = margin; i < width-margin; i += box_space) { 
  for(int j = margin; j < height-margin; j += box_space) { 
    //色を少しずつ暗くしてゆく
    fill(255 - box_size*10); 
    rect(j, i, box_size, box_size); 
  } 
  //箱のサイズを小さくする
  box_size = box_size - 0.6; 
} 

remake EmbeddingIteration
先ずはプログラムの先頭に

float default_box_size = 11

の一文を追加して,初期の箱のサイズを変数に保存しておき,二重for分の中のrectメソッドを以下のように書き換えると

    rect(j + (default_box_size - box_size) / 2, i  + (default_box_size  - box_size) / 2, box_size , box_size); 

中心の位置が揃うから奇麗になるかなぁ〜.って思たけど....

たいして奇麗にならないのはなんででしょう....