ボールの自然落下をシミュレート
初速度ベクトルにしたがってボールの座標を動かすんだけど、そのままだとウィンドウを突き抜けてボールがどこかへ飛んでいってしまうから、適当に壁を作り、壁を超えたらベクトルを反転させて、跳ね返るようにする。
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方向のベクトルを反転するわけなんだけど、この反転後のベクトルの大きさとボールの位置が、理想的な数値とは微妙に異なっているために、前述したような不具合が発生しているものと考えられる。
ボールの座標とベクトルを適切に設定してやりさえすれば、多分ちゃんと動くようになると思う。