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 > 60) { frame = 0; } translate(width/2, height/2); //基準を真ん中にする //塗り黒、線なし。 noStroke(); fill(0); float n = frameCount * 0.1f; //1秒間のフレームの数を緩やかに変える float progress = (frame / 60.0); //frameが0-30になるときに、0-1.0に変化するようにする。 float curve = progress * progress; //progressを掛け合わせて、加速度を作る。 for (int i = 0; i < 1000; i++) { //四角の数を変える rotate(radians(i)); //軸を回転させる scale(1 - 0.01f * i/3); //大きさと四角の数を変える x = width / 2.0; //xは画面中央で固定 y = frame * 20; //frame(0-60)に、20をかけた値がy(0-1200) y = curve * 5000000 * n - 5; //画面外から中央(200)までyを移動させる。 if(y < 1000000000){ n = -n * -curve ; } ellipse(x, y, eSize, eSize); } }