FLYING

〈全日本・紀文豆乳飲料シリーズ「麦芽コーヒー」の500ミリリットルパックを扱う小売店が少ないことに遺憾の意を表明する会〉活動記録

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

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

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方向のベクトルを反転するわけなんだけど、この反転後のベクトルの大きさとボールの位置が、理想的な数値とは微妙に異なっているために、前述したような不具合が発生しているものと考えられる。

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