0

粒子分布、つまり 3D array のセットがありxyNz個の粒子の位置が得られます。ドメインをセルに分割し、セル内にいくつの粒子があるかを示すアルゴリズムをプログラムしたいと考えています。あまりメモリを使わないものを探しています。粒子の分布が 1 次元である場合、賢明な考えは、粒子を減少させてソートすることxです。このようにして、セルごとにx、セル内の小さい粒子を保存するだけで済みます。たとえば、7 番目の粒子はxcell に属する小さい方の粒子であることがわかっていiます。したがって、セルiで、粒子 0 から 7 を見つける必要があります。

私の質問は、これを 3D に拡張するにはどうすればよいですか? または、連鎖メッシュを構築するにはどうすればよいですか?

4

2 に答える 2

1

これは些細な問題ではありません。R ツリーと実際に空間データベース全般を見たいと思うかもしれません。

于 2012-03-02T09:12:16.623 に答える
0

あなたの問題はもっと簡単に解決できると思います。

「セル」の 3D 配列を作成します。パーティクルをループし、現在のパーティクルが属するセルの値を増やします。

サンプルコード:

cells = int[X][Y][Z]
for p in particles:
   cx = cast_to_int((p.x / maxX) * X)
   cy = cast_to_int((p.y / maxY) * Y)
   cz = cast_to_int((p.z / maxZ) * Z)
   cells[cx][cy][cz]++ 

UPD : すべてのセルが同じ対応するサイズ (つまり、x1 = x2 = xn、y1 = y2 = yn...) の場合にのみ機能します。

于 2012-03-02T09:16:18.577 に答える