スマブラ物理部 ふっとび軌跡 (第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は空気抵抗係数です。
原点付近では、空気抵抗があると、無いときよりもy座標が上に来るというのは面白いですね。
また、空気抵抗があるとあるx座標より先に行けずに急速に落下します。(指数的に落ちます)
この位置を測ることでスマブラ物理のパラメータを楽に同定できることも、黄黒氏は指摘しています。素晴らしい!
なお、空気抵抗がある場合の式は k = 0 を代入すると空気抵抗が無い場合の式に一致・・・しません!
k = 0 を入れると分母が0となって発散してしまいますね。
k = 0 付近では変な挙動をしているのだろうと予想できます。(真面目に近似式を得たいならたぶんTaylor展開です)
空気抵抗係数を変えた時の挙動
空気抵抗係数kをだんだんと0に近づけていってみました。
以下は考察です。
kを0に頑張って持っていっても、どうやら空気抵抗が無い場合の形状にはなかなか一致しない(収束が遅い)ことが分かります。
k = 1e-10 のときの軌跡をみてみると、ジグザグしています。これがツールで扱える有効桁数を超えてしまっていることを示しています。
(切り捨て=四捨五入が発生し、ジグザグしているわけです)
もう少し収束が早い式でないと、シミュレーションでみるには辛いわけです。
これを裏付けるために、初速度を1/10倍にしてみます。
今度は、収束した様子がみられますね。
係数の調整により、だいぶ収束が早まったということですかね。
計算してみると、思っていたより大変な点が見つかって面白かったです。
まとめ
空気抵抗がある場合の曲線から、k→0の極限をとると、空気抵抗が無い場合の曲線に収束するが、
初期値によってはなかなか収束の様子が見にくい。。
それでは。