FLYING

/* TODO: 気の利いた説明を書く */

ボールの自然落下をシミュレート

初速度ベクトルにしたがってボールの座標を動かすんだけど、そのままだとウィンドウを突き抜けてボールがどこかへ飛んでいってしまうから、適当に壁を作り、壁を超えたらベクトルを反転させて、跳ね返るようにする。

if (pos_x < 0 || pos_x >= WIDTH) {
	vector_x *= -1;
}
if (pos_y < 0 || pos_y >= HEIGHT) {
	vector_y *= -1;
}

pos_x += vector_x;
pos_y += vector_y;

細かいことを抜きにすると、こんな感じの処理をループで回して、逐一ボールを画面に表示させればいい。

そんでもって自由落下になるように、重力と跳ね返り係数のパラメータを追加してやるんだけど、そうすると何故だか自由落下に近い運動にはなっても、最終的に静止してくれない。微妙な高さでずっとバウンドし続けてしまう。ただいま原因究明中。

追記

ある座標からボールが自由落下し、地面にぶつかったときにy方向のベクトルを反転するわけなんだけど、この反転後のベクトルの大きさとボールの位置が、理想的な数値とは微妙に異なっているために、前述したような不具合が発生しているものと考えられる。

ボールの座標とベクトルを適切に設定してやりさえすれば、多分ちゃんと動くようになると思う。