Monday, September 28, 2009

どうやらDeforming Meshes that Split and Mergeを実装するには,FEMは計算しなけりゃならんようだ

WojtanさんたちのDeforming Meshes that Split and Mergeを読んで,この論文がメッシュがくっついたり切れたりする計算方法について論じているだけで,弾性物体の物理計算は既存の手法使うということが記述されている.
論じられているくっついたり切れたりは比較的単純な方法で,ものが近づいたらくっつける,ものが極端に細くなったら切ると言ったもの.
この計算は,各ステップの物理計算後に処理するとのこと.
ということは,この実験するには,ちょっと前までプログラミングしていたコードを完成させなきゃならんということだ.
それで点の移動はルンゲクッタ法を使うと書いてあるのだが,前回の記事で逐次変形するものにはルンゲクッタは使えないとかほざいてたこのブログの著者と反する意見.えー,変形するものでもルンゲクッタ使えるのかよぉ,と思っていたら,あることが頭に引っ掛かった.
以前,変形するオブジェクト相手にルンゲクッタ法使ったことあった.
思い出して,昔のコードを漁ってみると,出てきた.
なんだやってるじゃん.
で,そのメモ.

v1 = Fn/m*dt
v2 = (Fn/m+v1/2)*dt
v3 = (Fn/m+v2/2)*dt
v4 = (Fn/m+v3)*dt
vn+1 = vn+(v1 + 2*v2 + 2*v3 + v4)/6

x1 = vn*dt
x2 = (vn+x1/2)*dt
x3 = (vn+x2/2)*dt
x4 = (vn+x3)*dt
xn+1 = xn+(x1 + 2*x2 + 2*x3 + x4)/6

Fは力,vは速度,xは位置とdtはタイムステップとしている.

//追記 20091009
式に間違い発見
修正しました

No comments: