スポンサーリンク

Excel VBA アニメーション 斜方投下で壁激突


たまに、Excel VBA でアニメーション動画を作ります。

セルをすごく細かくして、Excel VBA で絵を描いて動かすという。

はい、完全な趣味です(^ ^)

会計事務所の仕事で Excel VBA を使うときは、数値の並び替えを行うことが殆どです。

正確にカチッとデータを操作しなければならず、自由な発想をする余地はあまりありません。

それに対して、Excel VBA でアニメーション動画を作るときにはいくらでも発想を広げることができるのです!

さて、最近「斜方投下したボールが壁にぶつかって跳ね返る」アニメーション動画を作成したのでアップしますね。

スポンサーリンク

1、物理の公式を入れ込んだプログラミングコード

上記の動画のボールの動きは、高校物理で出てくる公式を入れ込んだものです。

横方向にボールを発射した直後から、斜め方向に落ちて行き壁にぶつかって跳ね返って、バウンドを繰り返してどこかで止まります。

・初速(右方向)
・反発係数

を変えると、バウンドの仕方も様々に変化します。

*反発係数というのは、壁や地面の反発のしやすさだと思ってもらえればいいです。

初速(右方向)が速ければ勢いよく壁にぶつかり、遅ければいきなり地面に落ちます。

反発係数が1に近ければぴょんぴょん跳ねて、0に近ければ全然跳ねません。

2、理系の人向けにややマニアックに解説

物理の公式

さて、理系の方に向けてどのような物理の公式を埋め込んであるか一応説明しておきますね。

ボールの落下点から見て

・横方向を X 軸(右方向が正)
・縦方向を Y 軸(下方向が正)

としています。

X 軸方向には、加速度は 0 m/s2(加速せず等速)です。

Y 軸方向には、重力加速度 g = 9.8 m/s2 がかけられています。つまり、時間が経つほどボールが下方向に加速するんですね。

ボールが落下点まで来てから経過した時間を t(s)とすると、右又は下の壁にぶつかるまでの間のボールの速度と位置は次の公式で表せます。

反発係数 e は 0より大きく1未満の範囲で指定します。

e が1に近いほど壁が反発しやすく、0に近いほど反発しにくいです。

プログラミング

さて、プログラミングについて超ざっくり説明します。

時間 t を小刻みに Δt ずつ増やしていきます。

Δt 増やすごとにボールを表示させ、それと同時に時間を Δt 増やす前のボールの表示を消します。

これを繰り返してボールの移動を表現しているのです。

ボールが壁にぶつかる瞬間の表示はとても苦労しました。

3、まとめ

ややマニアックな内容も含めてアニメーションの解説をしてみました。

Excel VBA でアニメ―ション動画を作るといい頭の運動になりますし、やっぱり楽しいです(^ ^)

なお、これまでブログにアップしたExcel VBA でアニメ―ション動画のうち Youtube 上で一番再生されているものも合わせて載せておきますね↓

ドラクエⅣでスライムがキングスライムに合体するシーンです!