さまざまな空間充填曲線の違いは何ですか?


14

空間充填曲線は、空間的な局所性を明らかにするのに役立つため、多くのグラフィックアプリケーションで重要です。Z曲線、モートンコード、ヒルベルト曲線などを使用したさまざまなアルゴリズムについてよく耳にします。これらのさまざまな曲線の違いは何ですか。また、さまざまなアプリケーションにどのように適用されますか。



サメットの多次元およびメトリックデータ構造基礎のセクション2.1.1.2も参照してください。
lhf

回答:


13

違いは、マッピングがいかにうまく局所性を保持するか、およびキーを簡単にエンコード/デコードすることです。HV Jagadishによる論文「複数の属性を持つオブジェクトの線形クラスタリング」は、次のように述べています。文学"。一方、z-orderは少し使いやすく、たとえば、z-orderのBit Twiddling HacksとHilbert-orderのWikipediaにリストされているさまざまなメソッドを比較します。

アプリケーションに関しては、空間充填曲線を使用する主な利点は、高次元の空間から低次元の空間にポイントをマップすることです。たとえば、従来のBツリーデータベースインデックスを使用してポイントのウィンドウクエリを可能にします。繰り返しになりますが、欠点は、後でマッピングの「サイズを変更」することが難しいため、入力の境界を事前に知る必要があることです。

PS:「Z曲線」は「モートンコード」と同じです。

PPS:追加のマッピングにはペアノ曲線が含まれ、アプリケーションについてはGeohashも参照してください。


9

これらの空間充填曲線により、曲線に沿って直線的に「歩く」ときに、複数の次元で局所性を保つことができます。

私が見たものから、Zオーダー(モートンコードとも呼ばれます)は、曲線の任意のポイントに直接アクセスするための一定の(そして安価な)計算コストのため、最も採用されています。(また、「単純な切り替え」アドレスワイヤに対応するため、0サイクルのペナルティでハードウェアに簡単に実装できます)。

Zオーダーカーブの具体例はテクスチャスウィズリングです。これは基本的に、GPUでのテクスチャ読み取りのキャッシュヒット率を増加させます。(Z-Curve https://en.wikipedia.org/wiki/Z-order_curveに関する記事の画像を参照してください

テクスチャを単純に線形に保存する場合、テクスチャのみを2Dイメージとしてレンダリングすると最大のキャッシュヒットが得られますが、画面上で90度回転すると、最悪のシナリオになります(すべてのテクスチャ読み取りのキャッシュミス) 。

その結果、少しトレードオフし、ベストケースシナリオを低くし、ほとんどのパターンでキャッシュヒットを改善することをお勧めします。

個人的な注意として、私が見たものから、他の曲線は計算に再帰的なステップを必要とし、局所性の一貫性の観点から最小限のゲインでZ-Curveよりも大きなコストをもたらす可能性があります。そのため、数学または創造的/面白いレンダリングの研究対象として以外、実用的な目的で使用される曲線について聞いたことがありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.