float eSize = 40; //オブジェクトのサイズ float x = 0; //オブジェクトのx座標 float y = 0; //オブジェクトのy座標 void setup() { size(400, 400); } float frame = 0; void draw() { background(255); //軌跡を残す場合は、下の3行をON、backgoundをOFFにする /* fill(255, 50); //透明度のあるrectを描画 rect(0, 0, width, height); fill(0); //オブジェクトは黒 */ //フレームカウントを1上げる。60を越える場合は0に戻す。 frame += 1.0; if (frame > 300) { frame = 0; } translate(width/2, height/2); //基準を真ん中にする for (int i = 0; i < 10000; i++) { //四角の数を変える rotate(radians(i)); //軸を回転させる scale(1 - 0.01f * i/3); //大きさと四角の数を変える //塗り黒、線なし。 noStroke(); fill(0); x = width / 2.0; //xは画面中央で固定 float progress = (frame / 60.0); //frameが0-30になるときに、0-1.0に変化するようにする。 float curve = progress * progress *progress; //progressを掛け合わせて、加速度を作る。 // [POINT] 0-1.0の値を何回掛け合わせても、最大値は1.0 * 1.0 = 1.0となって安定するので常用するテクニック。 y = curve * 500 - 50; //画面外から中央(200)までyを移動させる。 ellipse(x, y, eSize, eSize); } }