アニメーション
簡単な例として、 ビリヤード台上の球の動きをシミュレーションするプログラムを考
えてみます。 台の縁における球の衝突は完全な弾性衝突であると仮定します。 つ
まり、 衝突において縁と平行な方向の速度成分の大きさと符号は変わらず、縁と垂
直な方向の速度成分の符号のみが変わります(大きさは変化しない)。 描画した球
を背景色と同じ色をした同じサイズの球を同じ場所に描画して消去し、 僅かな時間
差をおいて新たな球を進行方向に再描画することによってアニメーションを実現して
います。
十進BASICを使って作成したアニメーション・プログラムを以下に示します。
上記のプログラムを実行したときの出力画面を次に示します(図1参照)。
(図1、十進BASICを使ったアニメーション、スタート画面)
また、典型的なシミュレーション条件は、
ステップ数 -> 2000
初期位置(X座標) -> 0
初期位置(Y座標) -> 0
時間間隔 -> 0.005
向き(X方向) -> 1
向き(Y方向) -> 1
移動幅 -> 0.2
となります。 この条件での球のスタート時の進行方向は、右斜め上45度になります
。 多少、 ちらつきがありますが、アニメーションとして十分に楽しめるものになってい
ます(プログラミングが得意な方は、上記のちらつきを抑える工夫をしてみてください
)。
課題(その1)
5個の球を同時にランダムな位置、ランダムな方向でスタートさせて、その後の動き
をシミュレーションするプログラムを作成してください。 球同士の衝突は、 完全な弾
性衝突とします。 可能ならば、台上に一つ以上の障害物をおいてシミュレーションし
てみてください。 中央に穴が開いた仕切りをおき、スタート時点で球を片側だけに配
置すれば、二次元平面での運動する物体の拡散問題となります(図2参照)。