HOME > natural science Laboratory > 学会へ行こう!プロジェクト > Event Driven Science > コンピュータ・サイエンス講座 > 基礎講座

コンピュータサイエンス―基礎講座・第二回―

文責:田村 友里恵 (2009年3月 7日) カテゴリ:基礎講座(19)

今日はボールを斜めに動かして、壁にあたったら跳ね返るプログラムを作成した。
壁は、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軸方向の速度が変わっているということがわかる。

IMG_1612.JPG



▲このページのトップNPO法人 natural science トップ

▲このページのトップNPO法人 natural science トップ




Warning: mysqli_connect(): (28000/1045): Access denied for user 'xsvx1015071_ri'@'sv102.xserver.jp' (using password: YES) in /home/xsvx1015071/include/natural-science/include_counter-d.php on line 8
MySQL DBとの接続に失敗しました