粒子法のプログラムを実装しようとしたのですが、論文や本だと数式レベルでしか説明がなく、それをプログラムにして動くようにするまで苦労しました。 数式をプログラムに落とすこと自体は簡単なのですが、各定数の値が分からなかったりして、粒子が上手く動いてくれるまで大変でした。 なので、同じところでつまづく人も多いのではと思い、自分が書いた粒子法のプログラムを紹介しようと思います。下の動画を作ったときのプログラムです。SPH法です。 こちらがソースコードです。 ※2009.11.4追記 こちらに整理したC++版のほか、Haskell版、OCaml版のコードがあります。 まずはシンプルにと考え、近傍粒子の探索は工夫せず、n(O^2)ですがわかりやすいアルゴリズムを採用しています。まず動くコードを書き、そこから高速化していくアプローチです。 また、計算量を減らした方が試しやすいのと、粒子法は3次元への拡張
![粒子法のプログラム第1回(概要)](https://cdn-ak-scissors.b.st-hatena.com/image/square/f6cd6ce2883c50c106914f4cde8359a3473e637e/height=288;version=1;width=512/http%3A%2F%2F1.bp.blogspot.com%2F-JTwKlgn_pyw%2FTqpPFx79pUI%2FAAAAAAAAAWQ%2FwCe19TGHiCo%2Fw1200-h630-p-k-no-nu%2Fmovies2.png)