2

Kd-tree を調べていたところ、このアルゴリズムの実装がいくつか見つかりました。これらはすべてポイントを格納していました (ほとんどの場合 2d)。私が達成しようとしているのは、長方形、三角形などのさまざまな形状を格納することです。kd-trees で形状を格納することは可能ですか? 四分木用のコードがいくつかあります。その中に形が保存されていました。

4

3 に答える 3

3

これは、クワッド ツリーで使用される方法とそれほど違いはありません。

形状ごとに、以下を計算できるはずです。

  • その重心。

  • その封筒。

中央値を計算するときは、重心を使用します。シェイプのエンベロープはクワッドに収まる必要があります。四角形に形状を挿入するときは、そのエンベロープが超平面を横切るかどうかを確認してください。true の場合、形状をクワッドに保存します。false の場合、このシェイプを左または右のクワッド コンストラクション コールのシェイプの適切なリストに入れます。

乾杯

于 2013-07-15T12:47:22.407 に答える
1

これは KD ツリーの自然な拡張です。

ツリーにポイントしかない場合:

  • ツリーのノードは空間の領域に対応します
  • 親ノード P と子ノード C1、C2、...、CN が与えられた場合、子ノード Ci は互いに素であり、P を分割します。
  • 各点 x は、ツリーのちょうど 1 つのリーフ ノードに存在します。

ツリーにボリュームがある場合:

  • ツリーのノードは空間の領域に対応します
  • 親ノード P と子ノード C1、C2、...、CN が与えられた場合、子ノード Ci は互いに素であり、P を分割します。
  • 各ボリューム v は、ツリーの少なくとも 1 つのリーフ ノードに存在します (それが交差する任意のリーフ ノードの「内」にあります)。
于 2013-07-15T17:58:22.153 に答える