子供向けプログラミング教室『CoderDojo熊本』で以前こんな質問がありました。
参考記事
マリオだってロックマンだってマイクラだって、
ぴょんぴょんジャンプができるのが当たり前で、
現実世界でもジャンプしようと思えば健康体であれば簡単にできると思うんですが、
いざジャンプができるようにプログラミングをつくってみようとすると、これがなかなか難しいんですよね。
なんせ、重力を再現しないといけないので。
普段生活している中ではそうそう意識することはないんですが、
ジャンプしたら着地するし、
スカイダイビングしようもんならぴゅーっと落ちてしまうし。
って思っちゃうんですが、
当たり前すぎて意識すらしていない事を、数式にして解読しようとした人たちがいたんですね。
誤解を恐れずに言えば、
自然界の法則を数式で再現しちゃおうというのが『物理学』であり『数学』なのかなと。
物理とプログラミングの関係 高性能化でより自然に
パソコンがどんどん高性能になって、ものすごい量の計算をあっさりできるようになるにつれ、
人がつくりだしたもの・・例えばゲームが、
どんどん自然界の動き方に近づいてくるようになりました。
例えばレースゲームで有名な『グランツーリスモ』なら、
- アクセルを踏んだ時の挙動・振動
- 少しずつ加速していく体感
- 急にハンドルを動かした時の重力
- 急ブレーキ踏んでもすぐには止まれないし
- ぶつかったときに弾き飛ばされたり
といった動きがどんどんリアルになってきました。
サッカーゲームで有名な『ウイイレ』も、
- パスを出した時のボールの動き方
- スルーパスを蹴った時のボールの動き方
- ドライブシュート、カーブ
などなど。
最近は本田圭佑やクリスチャーノ・ロナウドが得意とする無回転シュートの再現なんかもできるようになっています。
これらを実現するには『物理学』や『数学』といった理論 + 高機能な計算機が必要で、
最近ではスマホでもハイスペックな処理計算ができるようになり、
さらに『5G』で高速化が進むと。
とはいえ原則はやっぱり『物理学』『数学』なんですよね。
今回は『物理学』の基本とも言える『力学』についてざっくりまとめることにしました。
小学校でもならう物理の一歩 『おはじき』
もっともわかりやすい物理といったら、個人的には『おはじき』なんじゃないかなと思います。
- は・・速さ
- じ・・時間
- き・・距離
例えば速さが1秒で10メートル進む車があったとして、5秒走ったとしたら、
10メートル × 5秒 で 50メートル進む事になります。
距離が50メートルで、5秒かかったとしたら、
50メートル ÷ 5秒 で 1秒あたり10メートル進んだということになります。
とてもシンプルではありますが、これも立派な物理のひとつだと思います。
物理・力学 速さと加速度の公式
先ほどの『おはじき』にプラスして、
『物理学』のうちの『力学』では、
- 『質量』
- 『加速度』
- 『力』
- 『力の向き』
といった内容も増えてきます。
とはいえ、自然界の当たり前な事を数式にしているので、
シンプルに考えるとわかりやすくなってきます。
基本単位
・距離(長さ) (m)メートル
・時間 (s) 秒 ・・英語でsecond(セコンド)
・質量 (kg)
っと思いがちなんですが、厳密にはちょっと違って、
- 重さ・・その物質に働く重力の大きさ
- 質量・・物体そのものがもつ「動かしにくさ」
という区分けのようです。
物理・力学で使う公式その1 速度
$$ 速度(m/s)=\displaystyle \frac{距離(m)}{時間(s)} $$
→これは『おはじき』と同じですね。
物理・力学で使う公式その2 加速度
$$ 加速度(m/s^2)=\displaystyle \frac{速度の変化(m/s)}{時間(s)} $$
例えば自動車を動かすとして、
アクセルを踏み出した時はほとんどスピードがでなくて、
段々とスピードが早くなってきます。
1秒ごとに2メートルずつ早くなる車があったとしたら、加速度は$2(m/s^2)$となります。
参考記事
ニュートンの運動の3法則 2つめ 運動方程式
例えば自転車に乗った時、
動いていない状態から、ペダルを踏んで漕ぎ出したとすると、
力を加えて加速度が増えたという事になります。
漕げば漕ぐほど(力を加えるほど)、加速度も増えてどんどん速くなると。
ブレーキをかけたとしたら、逆方向の加速度がかかってしばらくすると止まります。
なので、力と加速度は比例していると考えられます。
また、
自転車のカゴが空ならすんなり漕ぎ出せますが、
例えばボーリングの球が入っていたとしたら、漕ぎだすだけでもなかなか大変になると思います。
カゴに入った荷物が重いほど加速度が出せなくなるので、
加速度は質量に反比例していると考えられます。
それらをまとめたものが『運動方程式』と呼ばれる式です。
運動方程式
$$ 力(kg・m/s^2)=\displaystyle 質量(kg) × 加速度(m/s^2) $$
- 力をFで (英語でForce)
- 質量をmで (英語のmass)
- 加速度をaで (英語でacceleration)
書き直すとこうなります。
$$ F = \displaystyle ma $$
また、質量1kgの物体を$$1m/s^2 $$ だけ加速するのに必要な力を 1N(ニュートン)と呼びます。
$$ N (ニュートン) = (kg・m/s^2)$$
ニュートンの運動の3法則
1. 慣性の法則・・止まっている物体はずっと止まって、動いている物体は(摩擦などがなければ)いつまでも同じ速度で動いている。
2. 運動方程式・・力の方向に加速度が発生する。加速度は力に比例し、物体の質量に反比例する。
3. 作用反作用の法則・・力を他に及ぼした物体は、同じ大きさの反対向きの力を及ぼされる。
物理で重力の再現・・重力加速度
日常生活ではジャンプしたら着地するし、
スカイダイビングしようもんならぴゅーっと落ちてしまうというのは、
もちろん地球に重力があるからなんですが、
物理学的にいうと『重力加速度』がかかっていることになります。
『重力加速度』は、$$ 9.8(m/s^2) $$ という事になっています。
- 地球の半径・・約$$ 6.38×10^6(m) $$
- 地球の質量・・約$$ 5.98×10^{24}(kg) $$
から計算できますが今回ははしょります。
うまいこと調整が必要になったりします。
重力加速度もこちらの記事で扱っています。
物理のフシギ 鉄球と羽根は同じタイミングで落下する?!
てっきり勘違いしてたんですが、
物理の教員免許を持っている友達から指摘がありました。
さっそくググってみると、ありました。
空気がなければ本当に羽は鉄球と同じ速度で落下するのか世界最大の真空チャンバーで実験
物理な友達によると、空気抵抗は速度に比例するそうで、
これまたしっかり時間つくって勉強してみたいと思います。
物理とプログラミングの関係性 理論を知って、理論で遊んで
地球に住んでいる限り、
重力(重力加速度:$$ 9.8(m/s^2) $$)があるのは絶対なのですが、
プログラミングに関して言うと、その重力加速度を調整することができたりします。
例えば重量加速度を$$ 1(m/s^2) $$ くらいに調整したりすると、
ゆっくりと落ちていく動きになるし、
重力加速度をプラスにしたりマイナスにしたりすると、
ふわふわと宙に浮かぶような動きをつくることもできます。
- 質量
- 速さ
- 加速度
- 距離 (プログラムの場合は位置)
などのパラメータを組み合わせたり調整したりすることで、
自然界のような動かし方をすることもできれば、
水中や宇宙空間にいるような感覚を表現することもできたりします。
まとめ 物理・力学のはじめのいっぽ
いくつかの公式を並べてきまして、
おいおいプログラミングでも動かしてみようかと思うのですが、
大事なことは、公式を丸暗記することじゃなくて、
現実世界の動きを理解しようとしたのが『物理学』という事だろうと思います。
最初はとっつきにくいかもですが、次第に慣れていく感じもしているので、
淡々と記事を書きつつ理解度を深めていけたらいいなと思っております。
参考図書
アオキのツイッターアカウント。
この記事へのコメントはありません。