Processingでプログラミング06:放物線とバウンドを描いてみる

ボールを遠くに投げるとき、少し上に向かって投げますよね。
そのような軌道をプログラムで表してみます。

実行結果はこちら。

ボールには下向きに重力がかかるので、それを模擬する計算をy軸方向のスピードに対して行います。

注意点としては、y軸座標は上が0です。このため、上に投げる場合、y軸の初速をマイナス値とします。また、重力加速度は逆にプラスの値とします。

せっかくなのでバウンドの処理も書いてみます。draw関数の一番下に処理を追加しました。

float g = 0.15; // 重力加速度
float x;        // x座標
float y;        // y座標
float spd_x;    // x方向のスピード
float spd_y;    // y方向のスピード

// セットアップ
void setup()
{
  // 画面のサイズ
  size( 640, 480 );
  // 開始座標
  x = 0;
  y = height;
  // 初速
  spd_x = 3;
  spd_y = -10;
}
// 描画
void draw()
{
  // 背景を黒で塗る
  background( 0, 0, 0 );
  // 加速度の演算
  spd_y += g;
  // スピードの演算
  x += spd_x;
  y += spd_y;
  // ボールを描く
  fill( 100, 255, 100, 255 );
  ellipse(x, y, 20, 20);
  // バウンドの判定
  if( y > height ){  // ボールが画面下に当たったら
    spd_y = -spd_y;  // y軸のスピードを反転
  }
}

実行結果はこちら。

サンプルソフトを改造して遊んでみてくださいね。

タイトルとURLをコピーしました