/* カオスゲーム Peitgen 他, Fractals for the Classroom: Part One Introduction to Fractals and Chaos, Springer, 1992, p.320 */ //初期パラメータの指定 int sq_size = 400; // 正方形のサイズ int dot_size = 1; // ドットのサイズ void setup() { size(400,400); // web では生の数値でないとうまく表記されない! smooth(); // 滑らかな描画のおまじない(処理は遅くなる) background(#373BED); stroke(#FFFFFF); //輪郭線の色を指定 float t = 1-sqrt(3)/2; triangle(0, sq_size, sq_size, sq_size, sq_size/2, t*sq_size );//三角形 stroke(111, 111, 111); //グレー /* float centerx = sq_size/2; float centery = sq_size*(1-sqrt(3)/4); ellipse(centerx, centery, dot_size,dot_size); */ } void draw() { float cx = sq_size/2; //現在の位置x float cy = sq_size*(1-sqrt(3)/4); //現在の位置y float Ax = 0; float Ay = sq_size; // A の座標 float Bx = sq_size; float By = sq_size; // B の座標 float Cx = sq_size/2; float Cy = sq_size*(1-sqrt(3)/2); // C の座標 stroke(255, 0, 0); //赤色 for(int i = 0; i<=20; i++){ int tri = int(random(3)); // 0,1,2 の乱数を決める if (tri == 0){ cx = (cx+Ax)/2; cy = (cy+Ay)/2; // 1/3 の確率でAとの中点 } if (tri == 1){ cx = (cx+Bx)/2; cy = (cy+By)/2; // 1/3 の確率でBとの中点 } if (tri == 2){ cx = (cx+Cx)/2; cy = (cy+Cy)/2; // 1/3 の確率でCとの中点 } ellipse(cx, cy, dot_size,dot_size); //ドットを描く } }