私は、CGALを使用してSTLベクトルとして何百万もの3Dポイントのメモリマップファイルを持っています。データセットをほぼ等しい部分に分割する任意の平面が与えられた場合、データセットをソートして、すべての内側の点がベクトル内で連続し、外側の点と同様に並べ替えたいと思います。このプロセスは、任意の深度まで繰り返す必要があり、非軸に整列したBSPツリーが作成されます。ポイントのベクトルを2つのスペースに分割する
可能であれば、データセットのサイズのためにこれを実行したいと思います。私はfiltered_iteratorを作成するために使用する述語ファンクタを持っていますが、もちろんポイントをソートするのではなく、一致しないものをスキップするだけです。だから私はは、2番目のベクトルを作成し、それにソートポイントをコピーし、元のベクトルラウンドロビンスタイルを再使用しますが、私は可能な場合は、イテレータを開始各スペースの終わり。
CGALにはすでにkdツリーデータ構造があり、それはあなたのニーズに合っているかもしれないことに注意してください。 –
kd木は軸に沿った面を使用しますが、私は任意に整列する必要があります。また、(私はこれを私の質問から除いて、私の悪いことから)、kd-treesはリーフノードにのみポイントを格納し、ブランチノードにはいくつかのポイントが必要です。しかし、それを言及してくれてありがとう! – MerseyViking