スマブラ物理部 ふっとび軌跡 (第15回 日曜数学会 黄黒氏リスペクト)

こんにちは。Kumaです。
第15回の日曜数学会議で黄黒氏が発表した
大乱闘スマッシュブラザーズにおけるふっとび軌跡は空気抵抗が考慮されている」
をふまえて、空気抵抗係数に対して軌跡がどのように変わっていくのか? という疑問を持ち
計算してみました。

背景

超有名ゲーム 大乱闘スマッシュブラザーズ の世界では、ふっとび軌跡は放物線となりません。
ある水平位置で急速に落下するような軌跡を取ります。
この軌跡は、(パッ見でも)空気抵抗がある場合の軌跡によく一致しています。
どうも空気抵抗が実装されているらしい。

これが 第15回 日曜数学会 で黄黒氏が発見した事実です。

空気抵抗がある場合とない場合

計算結果を示します。
なお計算ツールはMatlabで、
空気抵抗が無い場合:
x = m*v0/k*(1-exp(-k*t/m))*cos(theta);
y = (m/k)*( (v0+sin(theta)+m*g/k)*(1-exp(-k*t/m))-g*t)+h0;
空気抵抗がある場合:
x0 = v0*t*cos(theta);
y0 = (-1/2)*g*t.^2+v0*t*sin(theta)+h0;
となります。
kは空気抵抗係数です。

f:id:phymath1991:20190706130816p:plain
空気抵抗がある場合(青)とない場合(黒)

原点付近では、空気抵抗があると、無いときよりもy座標が上に来るというのは面白いですね。
また、空気抵抗があるとあるx座標より先に行けずに急速に落下します。(指数的に落ちます)
この位置を測ることでスマブラ物理のパラメータを楽に同定できることも、黄黒氏は指摘しています。素晴らしい!

なお、空気抵抗がある場合の式は k = 0 を代入すると空気抵抗が無い場合の式に一致・・・しません!
k = 0 を入れると分母が0となって発散してしまいますね。
k = 0 付近では変な挙動をしているのだろうと予想できます。(真面目に近似式を得たいならたぶんTaylor展開です)

空気抵抗係数を変えた時の挙動

空気抵抗係数kをだんだんと0に近づけていってみました。

f:id:phymath1991:20190706132833p:plain
空気抵抗係数を変えた時の挙動(v_init = 2000 m/s)


以下は考察です。

kを0に頑張って持っていっても、どうやら空気抵抗が無い場合の形状にはなかなか一致しない(収束が遅い)ことが分かります。
k = 1e-10 のときの軌跡をみてみると、ジグザグしています。これがツールで扱える有効桁数を超えてしまっていることを示しています。
(切り捨て=四捨五入が発生し、ジグザグしているわけです)
もう少し収束が早い式でないと、シミュレーションでみるには辛いわけです。

これを裏付けるために、初速度を1/10倍にしてみます。

f:id:phymath1991:20190706133024p:plain
空気抵抗係数を変えた時の挙動 (v_init = 200 m/s)

今度は、収束した様子がみられますね。
係数の調整により、だいぶ収束が早まったということですかね。


計算してみると、思っていたより大変な点が見つかって面白かったです。

まとめ

空気抵抗がある場合の曲線から、k→0の極限をとると、空気抵抗が無い場合の曲線に収束するが、
初期値によってはなかなか収束の様子が見にくい。。


それでは。