コンピュータサイエンス―基礎講座・第二回―
今日はボールを斜めに動かして、壁にあたったら跳ね返るプログラムを作成した。
壁は、x=1, x=-1, y=1, y=-1のときである。
解答例
プログラムの解答例は以下のとおりである。
(初期値は省略)
double x; //ボールのx座標 double y; //ボールのy座標 double Vx; //ボールのx軸方向の速さ double Vy; //ボールのy軸方向の速さ x = x + Vx; y = y + Vy; if(x <= -1 || x >= 1) { Vx = -Vx; } if(y <= -1 || y >= 1) { Vy = -Vy; }
プログラムの意味
今回、ボールを斜めに動かして、壁にあたったら跳ね返るプログラムを作成したのは、ボールの動きをx軸とy軸に分けて考えるためである。
例えば、ボールが右の壁(x=1)にあたって跳ね返ったとき、跳ね返る前と跳ね返る後で変わっているのは、x軸方向の速度、つまり、進む方向が変わっているだけなのだ。
同様に、左の壁(x=-1)、上の壁(y=1)、下の壁(y=-1)にボールがあたって跳ね返るときを考えていくと、右の壁か、左の壁に当たった時にはx軸方向の速度が変わっており、上の壁か、下の壁にあたった時にはy軸方向の速度が変わっているということがわかる。