【enchant.js】Hello Physical World vol.3【box2d】

「Hello Physical World」3回め。
今回のお題は摩擦係数です。

摩擦とは何か、例によってWikipediaを引いてみましょう。

二つの物体が接触している際に、その接触面に平行な方向に働く力。

ちょっとわかりにくいですね。もうすこし読み進めてみるとこんな箇所があります。

質量をもった物体が動いているとき、その物体の進行方向逆向きに働く力を摩擦力(Frictional Force)という。

「進行方向逆向きに働く力」!
うん、わかりやすいフレーズです。学校でもそんな感じで習ったような気がします。

ではさっそく例を見てみましょう。

画面をタッチして下さい。すべて右にブロックが進みますが、その移動量は異なっていますね。
これは床の摩擦係数がそれぞれ異なっているからです。
ブロックの摩擦係数と画面をタッチした時にブロックに加えられる瞬発力はすべて同じですが、
床の摩擦係数が上から0.5、1.0、2.0となっています。
それでは、このソースをforkして、ブロックの摩擦係数を0.0にしてみて下さい。
……どうでしょうか。すべて同じ動きになりましたね。
摩擦力は、接触するオブジェクト同士の摩擦係数をかけた値となります。
従って、今の例ではブロックの摩擦係数を0.0としたため摩擦力も0.0となり、すべて同じ動きをするようになったのです。
壁にぶつかるたびに速度が遅くなるのは、壁の反発係数に由来するものです。
もうひとつ例を見てもらいましょう。これは摩擦力がすべて同じになるパターンの例です。

というわけでおさらい。

  • 摩擦力は、接触するオブジェクト同士の摩擦係数をかけた値である

以上でした!