- ベストアンサー
OpenGLエアホッケーの移動について
- エアホッケーの移動について悩んでいる方へ
- エアホッケーの移動に関する計算方法について
- エアホッケーの移動における速度と位置の求め方
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そこがわからないのであればちょっと難しいかもしれないですが... まずニュートンの法則に従うと、物体にかかる力(F)と加速度(a)、質量(m)の関係は F = ma となります。 今回、物体にかかる力は速度に比例する、ということなので F = μv すなわち μv = ma => a = μv / m という具合に空気抵抗によって発生する加速度を得ることが出来ます。 加速度とは速度を時間で微分したものなので、 a = dv / dt => dv / dt = μv / m あとは、この微分方程式を解いていきます。 => (1/v)dv = (μ/m)dt => log(v) = (μ/m)t + c {c:積分定数} => v = e^{ (μ/m)t + c } => v = {e^(μ/m)t}・{e^c} この式で時間0の場合を考えると v0 = {e^0}・{e^c} = {e^c} となる。したがって、時間tにおける速度vは v = v0・e^(μ/m)t となる。 定数の符号が逆になっているのが気になるのであれば、 μ = -k として v = v0・e^-(k/m)t で提示された式と一致する。 という感じです。 ただ、この問題の場合は式の内容は導出方法がわからなくても提示された式をそのまま使ってプログラムを書けばとける問題なので、難しいことは考えずにとりあえずコードを書いてみるほうが良いのではないかと思います。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
exp も使ってやってほしい.
お礼
expもあったんですね。 数学の知識なしでゲーム作っていたので まずいと思って最近勉強していたので 気づきませんでした。
- qwertfk
- ベストアンサー率67% (55/81)
摩擦力と書かれていますが、この式だと空気抵抗っぽいです。 空気抵抗は速度に比例するので F = μv となる。 F = ma = μv => a = μv / m => dv / dt = μv / m ... と後は微分方程式を解いていけばその式になります。 ちなみに、eは自然対数の底です。
お礼
丁寧にありがとうございます。 ですがどうも私の方で数学の知識がぜんぜん足りていないみたいで Fがどこからでてきたとかmaがどこから出てきたのかわからないレベルで・・・ わざわざ書いていただいたのに申し訳ないです。 もしよろしければもう少し詳しく書いていただけると助かります (これ以上簡単にはできなかったらすみません。) よろしくお願いします。
お礼
なるほど、負の冪乗の部分は勘違いで普通に冪乗を行えばいいのですね eの部分は2.71828182845904523536として行うと、プログラム上は問題なさそうです。 式の内容やとき方はネットでひとつづつ調べて理解していこうと思います。