domino_toppling.jpg


ドミノ倒し

 以前作成したM5StickC Plus(下図)をドミノの代わりに使って、ドミノ倒しをモデリングしてみようと思います。

m5stickc_plus.jpg

動きのモデリング

隣のドミノとの接触

 ドミノを並べて横から見た下図を使って、ドミノ倒しの動きをモデリングしていきます。

domino_theta.png

 今、上図右端のドミノが左側へ倒れています。この時、ドミノは、A点を中心とする回転運動で倒れて行きます。以下の通りに定数を定義します。

 ドミノが倒れて、隣のドミノに接触した瞬間のドミノの傾きを鉛直線からの角度θ[°]として、θを求めてみます。橙色の直角三角形に注目して、θは以下式で表すことができます。

  sinθ=(DD−DT)÷DH

 θ以外は定数なので、逆正弦asin()関数を使うと、θを数値計算して求めることができます。

※ドミノが隣のドミノと接触し、次々倒れるために必要な条件: DT<<DD<<DH等を満たす様に定数を決めることは言うまでもありません。

 倒れ始めたドミノが、角度θとなって隣のドミノと接触すると、隣のドミノも倒れ始めます。隣のドミノも同様に倒れて行って、角度がθとなると、更に隣のドミノと接触して、所謂「ドミノ式」に次々と倒れて行きます。

倒れた後の状態

 最終的にすべてのドミノが倒れると、以下図のような状態となります。

domino_eta.png

 最後のドミノ(左端)は地面まで倒れますが、それ以外のドミノは下敷きとなった隣のドミノに引っかかって、角度ηまで倒れます。
 今回は簡単化のため、最後のドミノも地面まで倒れず、角度ηで止まるようにモデリングします。……物理的には不自然ですが、物理現象を正確にエミュレートすることは目的ではありませんので、計算の簡単化を優先します。

 更に計算を単純化するため、黄色い三角形が直角三角形だと見なして、角度η[°]を求めます。

  cosη=DT÷DD

 θと同じく、逆余弦acos()関数を使う事で、ηを数値計算して求めることができます。

倒れる速さ

 ドミノが倒れる時、重力に引かれて、倒れる速さは加速します。隣のドミノと接触することでエネルギの一部は隣のドミノに移り、一旦倒れる速さは遅くなります。一緒に倒れ始めた隣のドミノもまた、更に隣のドミノと接触して影響を受けます。
 物理法則に則って、まじめに計算するのは、相当に困難を伴うようです。

 そこでまず一旦は、ドミノが倒れ込む速さを、回転の角速度DS[°/s](一定)で表す事にします。すると、前節で求めたθ、ηに関して、以下の式が成立します。

 まずは、この簡単なモデルでレイトレーシングしてみましょう。

動きの調整

 前節の様な、単純化した角速度一定で倒してレイトレーシングしてみると、手前のドミノの倒れる速さが速すぎて、隣のドミノを追い越してしまうことが判りました。追い越してしまうので、隣のドミノにめり込んでしまうのです。

 本来であれば、角度θとなって隣のドミノと接触した後は、隣のドミノが倒れるスピードに合わせて倒れるように計算しなくてはなりません。ただし、これは大変複雑な処理となります。
 物理法則をシミュレートすることは目的ではなく、レイトレーシングで「それらしく見えれば良い」ので、以下の様に場合分けして、「それらしく見える」様に適切にパラメータを調整する事にしました。

 何で÷2.5してるの?とか、何で二乗してるの?とか、特に根拠はありません。「それらしく見える」様に調整した結果ですm(1−−)m。
 これでも、調整は完全ではなく妥協しているので、完成したアニメーションを注意深く眺めて見ると、まだ、隣のドミノにめり込んでいます。やはり、完全にエミュレートするには、物理法則などに基づいて計算するしかないみたいです。

 繰り返しになりますが、正確な計算をするのは大変な労力がかかるため、費用対効果が合いません。この辺で妥協しておくのが良いでしょう。


完成データ

 完成したデータをリンクしておきます。

1) Xi-TRACEデータ domino_toppling.xitr
2) 凹凸マッピングデータ m5stickc_plus_mark.xpic

 1)でレイトレーシングを実行します。2)は、マッピングデータですので、1)と同じディレクトリに配置しておいてください。

 完成した動画を以下にリンクしておきます。



 M5StickC Plusは、最初に単体で表示した橙色が本来の色なのですが、今回は色々な色のM5StickC Plusを作ってみました。どれかピンときた色はありましたか?自分でプログラムを組んで、キッチンタイマにしてみたり、万歩計にしてみたり、うまくするとゲームなんかも作れてしまうオールインワンの、かわいいマイコンボードです。


home

download

gallery