ドミノ連鎖シミュレーター 戻る
Rigid Body Simulator

ドミノ連鎖シミュレーター

2D剛体物理エンジンでドミノの連鎖反応を再現。クリックで配置した牌を押し倒し、角運動量の伝播とエネルギー変換をリアルタイムで観察しよう。

ドミノ連鎖シミュレーター

クリックでドミノを配置し連鎖反応を観察

操作

キャンバスをクリックしてドミノを追加

ドミノ間隔
間隔 50px
ドミノの高さ
高さ 60px
重力加速度
g 9.8 m/s²
0
総数
0
倒れた数
0.0
運動エネルギー
0.0s
経過時間
エネルギー表示
静止
回転中
高速
倒壊

回転運動方程式

$$I\ddot{\theta}= \tau_g - \tau_d$$

$I = \frac{mh^2}{3}$(底辺回転)、$\tau_g = mg\frac{h}{2}\sin\theta$

衝突時の角運動量移動:$\Delta L = F_{imp}\cdot r_{\perp} \cdot \Delta t$

🁣 ドミノを配置してください

キャンバスをクリックしてドミノを追加
または「自動配置」ボタンで一列に並べます

ドミノ連鎖シミュレーターとは

🧑‍🎓
ドミノって、なんで倒れると次々に倒れていくんですか?ただの棒が倒れて当たるだけなのに。
🎓
ざっくり言うと、倒れるドミノの「回転エネルギー」が、隣のドミノに「角運動量」としてバトンタッチされるからだよ。上のシミュレーターで「間隔」をものすごく広げてみて。倒れても次の牌に当たらなくなるでしょ?これが「伝達」の第一条件だ。
🧑‍🎓
なるほど!じゃあ「高さ」のスライダーを変えると何が変わるんですか?
🎓
良いところに気づいたね。高さが変わると、倒れる勢いがガラッと変わるんだ。実は、背が高いドミノほど重心が高いから、倒れる時に持つ位置エネルギーが大きくなる。その分、倒れる速度が速くなって、隣に与える衝撃力 $F_{imp}$ も強くなるんだ。試しに高さを最大と最小で比べてみて、連鎖の速さがどう変わるか見てみよう。
🧑‍🎓
え、じゃあ重力「g」を変えたらもっと変わるんですか?宇宙ステーションみたいにgを0にしたらどうなるの?
🎓
その通り!gは倒れる原動力である重力トルク $\tau_g$ を決めるんだ。gを小さくすると、倒れるのがゆっくりになって、連鎖が途中で止まっちゃうかもしれない。逆に大きくしすぎると、バタンと倒れすぎて跳ね返ったりする。シミュレーターでgをいじって、連鎖が成立するぎりぎりの条件を探してみるのも面白いよ。

物理モデルと主要な数式

各ドミノ牌の回転運動は、慣性モーメントと重力によるトルク、そして衝突時の角運動量移動で記述されます。まず、単体で倒れる時の運動方程式はこれです。

$$I\ddot{\theta}= \tau_g - \tau_d$$

ここで、$I = mh^2/3$ は底辺を軸とした時の慣性モーメント(棒の長さ $h$)、$\tau_g = mg\frac{h}{2}\sin\theta$ は重力が生み出すトルク、$\tau_d$ はダンピング(減衰)トルクです。$\theta$ は直立状態からの傾き角です。

連鎖の肝は、倒れてきた牌が隣の牌に与える「衝撃」です。この瞬間の角運動量の移動は、次の式でモデル化できます。

$$\Delta L = F_{imp}\cdot r_{\perp}\cdot \Delta t$$

$\Delta L$ は移動する角運動量、$F_{imp}$ は衝突時の衝撃力、$r_{\perp}$ は衝突点から次の牌の回転軸までの垂直距離(てこの腕の長さ)、$\Delta t$ は衝突時間です。この「角運動量のバトンタッチ」が連鎖を生み出します。

実世界での応用

エンターテインメントとアート:大規模なドミノアートやイベントでは、曲線配置や特殊トリガーを設計する必要があります。物理シミュレーションを使うことで、数千個に及ぶ牌の配置計画を効率的に立て、確実な連鎖を保証できます。

連鎖反応の教育モデル:核分裂の連鎖反応や、ソーシャルネットワークでの情報拡散など、抽象的な「連鎖」概念を、直感的に理解するための物理的アナロジーとして活用されます。エネルギー伝播の視覚化に最適です。

機械的スイッチ/トリガーの設計:微小な力で大きな機構を動かす「てこ」の原理や、一つのトリガーで順次スイッチが入る機械システムの基礎検討に、ドミノ連鎖の物理モデルが参考にされます。

剛体物理エンジンの検証:ゲームやCAEソフトウェアに使われる物理エンジンでは、多数の剛体が連続して衝突・回転する現象(ドミノ連鎖)は、計算の安定性やエネルギー保存則が正しいかどうかをテストする代表的なベンチマーク課題として使われています。

よくある誤解と注意点

まず、「間隔を狭めれば狭めるほど連鎖が速くなる」と思いがちですが、実は最適な間隔があります。例えば、牌の高さに対して間隔が極端に狭い(例えば高さの10%以下)と、倒れてくる牌が隣の牌の上部にぶつかり、押し倒すというより「押し込む」形になってしまいます。これだと有効なトルク($r_{\perp}$が小さくなる)を伝えられず、かえって連鎖が遅くなったり、止まったりします。目安としては、牌の高さの20〜30%の間隔が、最も効率的に角運動量を伝達できることが多いです。

次に、シミュレーション上で「摩擦係数」を0に設定しても、現実ではあり得ません。 机との摩擦が完全にゼロだと、牌が倒れる際に軸が滑ってしまい、綺麗な回転運動になりません。このツールでは机との摩擦は無限大(滑らない)と仮定しているので、純粋な回転運動だけを観察できます。実物で再現する時は、滑り止めシートなどでこの条件に近づける必要がある、というのが落とし穴です。

最後に、「重力gを大きくすれば無限に速くなる」というわけではない点。確かに倒れる角加速度はgに比例しますが、衝突の瞬間も無視できません。gを大きくしすぎると、倒れる速度が速すぎて、衝突時に牌が跳ね返ったり、次の牌を叩き壊すような大きな衝撃力が生じます。シミュレーション上では「破壊」をモデル化していないので、不自然な跳ね返りとして観察されることがあります。実用的な連鎖設計では、安定して伝播するgの範囲を見極めることが大切です。

関連する工学分野

このシミュレーターの核心である「剛体の回転と衝突」の計算は、実は様々な先端分野の基礎になっています。例えばロボットアームの動的制御。複数の関節(リンク)が連なり、モーターのトルクで動く様子は、ドミノの連鎖を「能動的で精密に制御されたもの」と考えることができます。各リンクの慣性モーメント$I$を考慮した運動方程式は、ドミノの式と本質的に同じです。

また、自動車の衝突安全シミュレーション(クラッシュ解析)でも、角運動量の伝達と吸収は重要なテーマです。車両が回転しながら障害物に衝突する時、車体各部やダミー人形にどのように角運動量(≒回転の勢い)が分配され、どの部位がエネルギーを吸収するか。ドミノの単純な衝突モデルを、はるかに複雑な3D形状と材料特性で拡張したものが、あの解析です。

さらに意外なところでは、半導体製造装置におけるウェハーやマスクの搬送機構。微細で高価な部品を、機械的な「てこ」や「連鎖」の原理を使って、正確かつソフトに位置決めする際の基礎検討に、このような物理モデルが役立ちます。微小な力で確実に動作させる「確実性」の設計思想は、ドミノ連鎖そのものです。

発展的な学習のために

まず次の一歩としておすすめなのは、「連鎖の速度の理論限界」を考えてみることです。ドミノ一個が倒れる時間$T$と間隔$d$から、連鎖速度は単純に$d/T$と思えますが、実際は衝突時間$\Delta t$や牌の厚みの影響を受けます。パラメータを変えながらシミュレーターで計測し、自分の予想と比べてみましょう。これが「モデル化と検証」の第一歩です。

数学的な背景を深めたいなら、ラグランジュ形式の力学を学ぶと視界が開けます。今は力やトルクを直接足し算して運動方程式を立てていますが、エネルギー(運動エネルギーと位置エネルギー)の差からエレガントに方程式を導く方法です。ドミノ系の運動エネルギーは回転の分だけなので、$K = \frac{1}{2} I \dot{\theta}^2$、位置エネルギーは$U = mg\frac{h}{2}(1-\cos\theta)$となり、これらからラグランジュ方程式を経由して、同じ$I\ddot{\theta}= \tau_g$が導けます。このアプローチは、より複雑な機構のモデリングで威力を発揮します。

最後に、このツールで飽き足らなくなったら、「3次元剛体シミュレーション」や「多体動力学(MBD:Multi-Body Dynamics)」に挑戦するのが良いでしょう。3Dでは慣性モーメントがテンソルになり、回転の軸が固定されないため、ドミノが倒れる途中で「ねじれ」が生じるなど、より豊かな現象を扱えます。これらを学ぶことで、ゲームエンジンの物理から実際の機械設計CAEまで、その基礎をしっかり理解できるようになります。