言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

物理ブツブツ

たまにやってくる ODECo の質問に真面目に答えようと、改めて ODECo の動作を復習している。質問されても僕はブリッジを作っただけで、物理シミュレーションについては全くわけが分かってないのだが、聞く方は僕が何か知ってるとでも思っているのだろうか。

例えばここにある物体があります。重力加速度は 1 です。単位は何でも良いですが、まあ、メートル毎秒毎秒で行きますか。一秒後にこれがどこにあるでしょうか? じっくり高校の授業を思い出して、何となくこれは 0.5 メートル下じゃないかと思うのです。速度がゼロのものがだんだん速くなって1秒後に1 になるのですから、だんだんの部分を考慮して 0.5 でしょう。距離 = 1/2 a t^2 ですな。だけどこれを ODE は 1 と答えてしまうのです。

正確には、ODE には実行する step と言う物があって、それは時間を進める事だと僕が勝手に思っていただけで、実は違う( らしい)というのが後で分かっただけなのですが、どうもこの step の挙動がよく分からないのです。

dWorldStep(wid, 1) を 5 回繰り返す。答えは 15 メートル下 (1 3 6 10 15 と落ちてゆく)

dWorldStep(wid, 5) を 1 回。答えは同じかと思いきや、25 メートル下になる。ちなみにステップ数を 1 から 5 まで変えてみた値は、 1 4 9 16 25 となる。

こういうのは、もしかして物理に詳しい人なら数列を見てハハーンと思うのだろうが、そういうセンスが無いので、全然中で何やってるのか分からん。ソースでも読むか。。。