1

私のコードは、範囲 [0,1] の 2D 空間に (X,Y) 座標のセットを出力します。

void Rect_Print() {
    cout << "In counter-clockwise fashion" << endl;
    cout << "#Rectangle    (   x0,   y0)   (   x1,   y1) " << endl;

    for (int b=0; b<Rect_Count; b++) {
       double Area = (Rect[b].x0 - Rect[b].x1) * (Rect[b].y0 - Rect[b].y1);

       cout << fixed << setprecision(4) << (b+1) <<
               "  (" << Rect[b].x0 << "," << Rect[b].y0 <<
             ")   (" << Rect[b].x1 << "," << Rect[b].y1 << ")" << endl;
    }

    cout << "Number of divisions (N = 3j-2) = " << Rect_Count << endl;
}

これらの点は、単位正方形を (3j-2) サブ長方形 (均一ではありません) に分割します。特定の長方形ごとに、それに隣接する長方形の総数を数えたいと思います。

  1. 最初の座標が単位正方形を次のような 4 つの長方形に分割するとします。

    画像

    この図では、長方形 3 に隣接する3 つの長方形があります。

  2. そのように進めば、6 番目のステップの後、単位正方形は 19 個の長方形に分割されます。したがって、次のようになります。

    画像

    これで、長方形 3 に隣接する5 つの長方形ができました。長方形-11 に隣接する6 つの長方形。

1 万個の座標のセットがあり、それらが正方形を小さなサブ長方形に分割するとします。C++ を使用して、それぞれに隣接する四角形の数を数えたいと思います。どうすればいいですか?

インターネットで検索したところ、Flann がうまくいくようです。ユーザーマニュアルを読みましたが、どうすればそれができるのかわかりませんでした。

誰でも私を助けることができますか?

4

2 に答える 2

0

r-tree または kd-tree を探すことができます。ツリーマップ アルゴリズムも同様に機能します。まず、ボックスを並べ替えて、2 軸で再帰的に分割してツリーに配置し、次のボックスがどこに収まるかを調べます。

于 2013-08-26T14:37:29.137 に答える