2018年3月8日木曜日

Scratchでプログラミング その21 学校教材っぽいやつ リンゴの落下シミュレーション

Scratchの使い方解説です、今回の難易度はEasy

記事をまとめたページはこちら。


今回も数式の再現してみます。
リンゴの落下シミュレーションをしてみます。



0.目次


  1. 公式の確認
  2. 初期値の設定
  3. 落下シミュレーション

1.公式の確認

高校で物理を習った人、重力の公式って覚えていますか?

速度=初速度+加速度×経過時間
位置=初期位置+初速度×経過時間+加速度×経過時間×経過時間÷2

という公式を習ったのではないかと思います。
これをそのままプログラムで再現してみます。

空中に浮いているリンゴをクリックすると、リンゴが重力に引かれて落下する様子をシミュレーションします。

2.初期値の設定

今回はネコではなくリンゴを使用します。
新しいスプライトからリンゴを選択します。



次に公式の再現に必要な変数を用意します。
データの「変数を作る」で変数を用意します。




速度
初速度
加速度
経過時間
位置
初期位置
公式で使ってるものをすべて変数で用意しました。


ここからプログラミングに本格的に入っていきます。
まずはイベントの「旗がクリックされたとき」で各変数の初期値を設定します。
「初期位置」の160は、画面上で上のほうの座標を適当に設定しました。



加速度は重力なので-9.8を設定しています。
これは公式のオキマリの値です。

3.落下シミュレーション

次に今回のメイン、落下するリンゴをプログラムで表現します。
イベントの「スプライトがクリックされたとき」を使用します。


今回は落下するアニメーションを作るので、
制御の「ずっと」で囲み変数の「経過時間」を0.2ずつ増やしています。
この0.2は特に意味はありません
シミュレーションの速さを早くしたければ、数値を大きくすればOKです。

次に、速度と位置を計算しています。
※今回のシミュレーションでは速度は実際には計算しなくても問題ありません。
次回の記事の布石です。

演算式はガリガリのゴッテゴテの式になっていますが、ただの物理の公式です。
演算のブロックを利用して式を表現しています。

最後にy座標をさきほど計算した「位置」に変更しています。

今回のプログラムはこうなります。



これまでに紹介したプログラムに比べると、比較的簡単なロジックですね。
これをそのまま実行すると、上にあったリンゴがクリックすることで下に落ちていきます。


最初はゆっくりと動き出し、時間の経過とともにスピードが速くなっていくことが視覚的に見てとれるのではないでしょうか。

大学などで延慶を行う場合、このようなシミュレーションをする場合があります。
実際には摩擦とか弾性とか、その他、もっとマニアックな条件を沢山登録することになりますが、やることはこのプログラムのように公式をシミュレーションすることが多いと思います。