解説しよう。(これ、懐かしいと思ってくれる人いるかな) まず、49~64行目は、お気づきのとおり、外枠との衝突判定です。外枠からはみ出したときに座標を修正しています。速度の反転は、速度成分が外向きのときだけ行っています。 このプログラムのキモは、28~41行目です。 まず、28~32行目では、自分の中心座標を原点として、自分の中心座標と衝突相手の中心座標を結ぶ直線がX軸と重なるように、自分および衝突相手の速度成分を回転しています。変数名にNがついているのが自分、Cがついているのが衝突相手です。回転の計算では、回転角のサインとコサインが必要で、それを求めているのが28行目です。