垂直落下……落下し、跳ねる
一つの円が、垂直に落下し、床でバウンドし、だんだんと減衰します。 減衰する運動【リスト6-3】と同じです。落下する円の座標を計算する関数ballFall()を定義し、それをdraw()関数から呼出しています。
クリックで停止⇔再開
【リスト FallVertical】 float g =1.8; //加速度 float friction=0.95; //減衰 float y; //y座標 float dy; //y方向の速度 float r = 5; // 円の半径 void setup() { size(150, 150); //描画するための画面 fill(0); } void draw() { background(255); //画面背景を白でクリア ballFall(); //y座標を計算する関数 ellipse(width/2, y, r*2,r*2); } void ballFall(){ dy = dy + g; y= y+dy; //y座標を動かす if (y>height-r){//下の壁 y = height-r; //壁の上に置く dy = -dy * friction; //速度が減衰 if(abs(dy)<=g/2) { //ほぼ止まったどうかを判定 dy=0; y=0; //止まったら、再度落下 } } }