Çeşitli boşluk doldurma eğrileri arasındaki fark nedir?


14

Alan doldurma eğrileri, uzamsal yöreyi ortaya çıkarmaya yardımcı oldukları için birçok grafik uygulamasında önemlidir. Sıklıkla Z eğrileri, Morton kodları, Hilbert eğrileri, vb. Kullanarak farklı algoritmalar duyarız. Bu farklı eğrilerin bazıları arasındaki farklar nelerdir ve bunlar çeşitli uygulamalara nasıl uygulanır?



Ayrıca bkz. Samet'in Çok Boyutlu ve Metrik Veri Yapılarının Temelleri bölüm 2.1.1.2 .
lhf

Yanıtlar:


13

Fark, bir eşlemenin konumu ne kadar iyi koruduğu ve anahtarları kodlamanın / deşifre etmenin ne kadar kolay olduğudur. HV Jagadish'in "Birden Çok Nitelikli Nesnelerin Doğrusal Kümelenmesi" adlı makalesi şöyle diyor: "Cebirsel analiz ve bilgisayar simülasyonu yoluyla, çoğu durumda Hilbert haritalamasının, Edebiyat". Öte yandan, z- order'ın kullanımı biraz daha basittir, örneğin z-order için Bit Twiddling Hacks'de listelenen çeşitli yöntemleri ve Hilbert-order için Wikipedia'yı karşılaştırın .

Uygulamalara gelince, boşluk doldurma eğrilerini kullanmanın temel avantajı, yüksek boyutlu uzaydan düşük boyutlu uzaya noktaları eşlemeleridir. Örneğin, geleneksel B-ağacı veritabanı dizinini kullanarak noktalar için sorgulama yapılmasını mümkün kılarlar. Yine, diğer taraftan, dezavantaj, daha sonra haritalamanın "yeniden boyutlandırılması" zor olduğundan, girdinin sınırlarını önceden bilmek zorunda olmasıdır.

PS: "Z-eğrisi", "Morton kodu" ile aynıdır.

PPS: Ek eşlemeler Peano eğrisini içerir ve uygulamalar için ayrıca Geohash'a bakınız .


9

Bu boşluk doldurma eğrileri, eğri boyunca doğrusal olarak "yürüdüğünüzde" konumu birden çok boyutta tutmaya izin verir.

Gördüğüm kadarıyla, Z-Order (Morton kodu olarak da bilinir), eğrinin herhangi bir noktasına doğrudan erişmek için sabit (ve ucuz) hesaplama maliyeti nedeniyle en çok kullanılanıdır. (Ve adres kabloları "sadece anahtarlama" karşılık gelen 0 döngü cezası ile donanımda uygulamak kolay).

Z-Order eğrisinin somut bir örneği doku dalgalanmasıdır: temel olarak GPU'larda okunan doku için önbellek isabet oranını artırır. (Z-Curve ile ilgili makaledeki resimlere bakın https://en.wikipedia.org/wiki/Z-order_curve )

Doku doğrusal olarak depolanırsa, sadece dokuyu 2D görüntü olarak işlerseniz maksimum önbellek vuruşunu elde edersiniz, ancak ekranda 90 derece döndürdüyseniz, en kötü senaryoya girersiniz (okunan her doku için önbellek özledim) .

Sonuç olarak, biraz takas etmek ve en iyi senaryoyu düşürmek ve modellerin çoğu için daha iyi önbellek vuruşuna sahip olmak daha iyidir.

Kişisel bir not olarak, gördüğüm kadarıyla, diğer eğriler hesaplamaları için özyinelemeli bir adım gerektirebilir ve konum tutarlılığı açısından minimum kazanç ile Z-Curve'dan daha yüksek maliyetle sonuçlanabilir. Dolayısıyla, matematik ya da yaratıcı / komik render alanındaki bir araştırma konusu dışında, pratik bir amaçla kullanılan bu eğriyi duymadım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.