振動運動リストに戻る    印刷する

垂直落下……落下し、跳ねる

一つの円が、垂直に落下し、床でバウンドし、だんだんと減衰します。 減衰する運動【リスト6-3】と同じです。
落下する円の座標を計算する関数ballFall()を定義し、それをdraw()関数から呼出しています。

Your browser does not support the canvas tag.

クリックで停止⇔再開
【リスト 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;  //止まったら、再度落下
       }
    }
}

arigat アットマーク acm.org / copyright © info