プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造のリージョンクワッドツリー


領域クワッドツリーは、領域を4つの等しい象限、サブ象限などに分割し、各リーフノードが特定のサブ領域に対応するデータで構成されることにより、2次元で空間のパーティションを表すのに役立ちます。ツリーの各ノードは、正確に4つの子に関連付けられているか、子が関連付けられていません(リーフノード)。この分解戦略に従うクワッドツリーの高さ(つまり、より詳細な処理が必要なサブクアドラントに興味深いデータが存在するまで、サブクアドラントをサブディバイドする)は、破壊される空間内の興味深い領域の空間分布に敏感であり、依存します。領域の四分木は、トライの一種として示されます。

深さnの領域四分木は、2n×2nピクセルで構成される画像を表すために実装できます。ここで、各ピクセル値は0または1です。ルートノードは、画像領域全体を表すのに役立ちます。いずれかの領域のピクセルが完全に0でも1でもない場合、それは細分化されます。このアプリケーションでは、各リーフノードは、すべて0またはすべて1のピクセルのブロックを表すのに役立ちます。これらのツリーが画像を保存するために実装される場合、スペースの面で潜在的な節約に注意してください。これらの画像には、多くの場合、全体で同じ色の値を持つかなりのサイズの領域が多数あります。クワッドツリーは、画像内のすべてのピクセルの大きな2次元配列を格納する代わりに、ピクセル解像度サイズのセルよりも多くの分割レベルが必要になる可能性がある同じ情報をキャプチャできます。ピクセルと画像のサイズは、ツリーの解像度と全体のサイズをバインドできます。

領域四分木は、データフィールドの可変解像度表現として実装することもできます。たとえば、ある地域の気温は四分木として保存され、各リーフノードはそれが表すサブリージョン全体の平均気温を保存します。

ポイントデータのセット(一連の都市の緯度と経度など)を表すためにリージョンクワッドツリーが実装されている場合、各リーフに最大の単一ポイントが含まれるまで、リージョンは細分化されます。


  1. データ構造における圧縮された四分木と八分木

    圧縮された四分木 細分化されたセルに対応するすべてのノードを格納するときに、多くの空のノードを格納してしまう可能性があります。このようなまばらなツリーのサイズを縮小するには、葉に興味深いデータがあるサブツリー(つまり、「重要なサブツリー」)のみを保存します。ここでも、実際にサイズをさらに縮小することができます。重要なサブツリーのみを考慮する場合、プルーニングプロセスは、中間ノードの次数が2(1つの親と1つの子へのリンク)であるツリー内の長いパスを回避する場合があります。このパスの先頭にノードUを格納し(そして削除されたノードを表すためにいくつかのメタデータをそれに関連付けて)、その最後にルー

  2. ハーフエッジデータ構造

    はじめに テンプレートパラメータまたはハーフエッジデータ構造(HalfedgeDSと略記)のHDSは、平面マップ、多面体、またはその他の方向付け可能な2次元など、頂点、エッジ、および面の入射情報を維持できるエッジ中心のデータ構造として定義されます。ランダムな次元に埋め込まれたサーフェス。各エッジは、反対方向の2つのハーフエッジに分割されます。各ハーフエッジには、1つの入射面と1つの入射頂点が格納されます。各面と各頂点に1つの入射ハーフエッジが格納されます。ハーフエッジデータ構造のバリエーションを減らすと、面のハーフエッジポインタや面の保存など、この情報の一部を削除できます。 ハーフエッジデ