トップページgamedev
981コメント311KB

ゲームのための物理(力学)

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/04/08 17:38ID:dlksSYkA
ゲームに必要な物理(力学)を語るスレッド。

例えば、坂道を転がる球の加速度だったら。

その球の密度が一様ならば、慣性モーメントは(2/5)MR^2なので

dV/dt = 5*g*sinθ/7;

と表せるよとか。

他にも剛体運動、力積とか語ってください。
0669名前は開発中のものです。04/07/15 20:42ID:U/3mv6yK
>>668
ちょっと違う気がしますぅ
例えば、近似したい関数を sin(x) としましょうか。
そして、近似関数を f(x) = A*a(x) + B*b(x) + C*c(x) ... とします。
ただし A , B , C は定数 a b c は高速に計算できそうな適当に選んだ関数で
今回は a(x) = 1 , b(x) = x , c(x) = x^3 としておきます。

 { sin(x) - A*a(x) + B*b(x) + C*c(x) ... }^2 == 誤差(x)
 { sin(x) - A + B*x + C*x^3 }^2 == 誤差(x)

として、できる限り小さい誤差になるように A B C を決めようにという物です。
誤差が絶対値ではなく二乗なのは、こうしておけば解析的(要するに式変形で)計算できるからです。
ただ、このままだと一点の誤差だけなので、f(x)の利用範囲で定積分して誤差を合計します。

 ∫ 誤差(x) dx = 誤差の合計

0670名前は開発中のものです。04/07/15 20:42ID:U/3mv6yK
この「誤差の合計(A,B,C,...)」という関数を A B C ... で変微分します。
誤差は最少の点は、誤差の増減量が0になる場所です。
そこで、連立方程式

0 = δ誤差の合計(A,B,C,...)/δA
0 = δ誤差の合計(A,B,C,...)/δB
0 = δ誤差の合計(A,B,C,...)/δC
...

を作ります、この連立方程式は連立一次方程式です。
これを鶴亀算で解いて A B C ... を決めると
 f(x) = A*a(x) + B*b(x) + C*c(x) ... ≒ sin(x)
となります。
ちなみに ∫ 誤差(x) dx の値の平方根の大体三倍ぐらいが最大誤差になっています。
以上を公式表片手にガリガリ解きますです。
■ このスレッドは過去ログ倉庫に格納されています