fbpx

【制作物紹介】ジェットコースター力学シミュレーター

前回のワイングラス共振シミュレーターに続いて、金沢大学 国際基幹教育院様からのご依頼で力学シミュレーターを制作いたしました。

今回のご依頼は、ジェットコースターを使った力学的エネルギーの保存です。

遊園地のアトラクションでおなじみのジェットコースター。実はお客さんが乗り込む車両自体には基本的に動力はありません。ジェットコースターに乗ると、最初にゆっくりとレールを登っていきますが、これはレール自体に車両を引き上げる装置が付いているためです。

一番高いところまで引き上げられた車両は、レールを滑り落ち始めるとその後は動力なしで動き続けます。位置エネルギーが運動エネルギーに変換されることで速度を得ているのです。レールの高さが低くなるほど速さは増し、逆にレールを登り始めると遅くなります。もし、レールとの摩擦や空気抵抗がなければ、ジェットコースターは最初の高さまで動力なしで戻ることができます。

これは位置エネルギーと運動エネルギーの和(力学的エネルギー)が常に一定である、つまり保存されることで起きる現象です。このことから、ある地点における車両の高さと速さを知っていれば、その他の地点における高さと速さはどちらかを計測すれば、もう一方は計算で求めることができるということになります。

今回のシミュレーターはこのジェットコースターの位置と速度の関係をシミュレートしたものです。
初期位置の高さは固定で、初速を自由に変化させることができます。ループの頂点付近で速さが0になるように初速を調整することで、ループの高さを計算で求めることができます。

運動エネルギーKと重力の位置エネルギーUは、以下の式で表されます(mは質量、vは速さ、gは重力加速度、hは高さ)。

K = 1 2 m v 2 U = m g h

力学的エネルギーはこの和なので、

E = K + U = 1 2 m v 2 + m g h

これが一定なので、初速と初期位置をv0, h0、一定時間経過後の速さと位置をv, hとすると、

1 2 m v 0 2 + m g h 0 = 1 2 m v 1 2 + m g h 1

が成り立つので、初期値とv1がわかれば、h1を求められます。

正確な値ではなく、だいたいの値が求められればよいということでしたので、頂点付近で十分速さが小さくなれば0になったものとみなします。この条件に合致した場合、車両がレールを外れて落下し、真ん中にある台に着地するようになっています(現実では車両とレールは噛み合って落ちることはありませんが、わかりやすくするための演出です)。

実際に動いている動画を用意したので、ご覧ください。

初速が足りない場合

ループを登り切ることができずに引き返します。エネルギーが保存されているので、車両は開始位置の高さまで戻ることができます。

初速が速すぎる場合

ループをぐるりと回って走り去っていきます。

初速がちょうどいい場合

ちょうどループの頂点付近で速度がほぼ0になるよう初速を調整すると、このように回転しながら落下する演出が入ります。

ループの高さや初期位置の高さなどは設定ファイルを書き換えることで、自由に変更することができるため、様々なパターンの問題を設定することができます。
重力加速度も変更可能で、予めループの高さを与えておけば、重力加速度を求める問題にすることもできます。

設定した値によってレールや車両の大きさが変わることはありませんが、初期位置の高さだけは3パターン用意していて、ループの高さとの比率によって表示パターンを変えています。

このため、開始位置のレールと、ループ部分のレールとでは見た目と実際の高さとの比率が違います。それぞれ今どっちのレールにいるかを判別して、比率を切り替えて表示するようにしています。

今回も表示はCanvasを使用。レールに沿って動かすため、内部に軌跡のみのSVGを持っていて、getPointAtLength を使って進んだ距離に対応する座標を取得しています。

前回のワイングラスと違って動きが大きく、よりゲーム感覚で楽しみながら力学について学べるものになったのではないかと思います。

今回もまた新たなチャレンジの機会を与えてくださった金沢大学様に感謝いたします。

WEB・ITなんでも相談会

こちらから個別相談の事前予約が可能です

※予約優先となります。空きがございます場合は予約がなくても対応できます。