2009-01-31 10 views
7

Ho un insieme di valori di Hilbert (lunghezza dall'inizio di Hilbert curve nel punto specificato).Mappatura dei valori di Hilbert ai punti 3D

Qual è il modo migliore per convertire questi valori in punti 3D? La curva originale di Hilbert non era in 3D, quindi suppongo di dover scegliere da sola il grado di curva di Hilbert di cui ho bisogno. Ho però una lunghezza totale della curva (cioè il valore massimo nell'insieme).

Forse esiste un'implementazione esistente? Qualche libreria che mi permetterebbe di lavorare con curve/valori di Hilbert? La lingua non importa molto.

risposta

3

Non una risposta sulla conversione in 3D, ma c'è un bel algoritmo e la discussione dei valori di Hilbert qui Two-dimensional spatial hashing with space-filling curves

Da MIT

4 algorithms for the n-dimensional Hilbert Space-Filling Curve 

* A. R. Butz, "Alternative Algorithm for Hilbert's Space-Filling Curve", 
    IEEE Trans. Comp., April, 1971, pp 424-426. [Butz 1971] 

* S. W. Thomas, "hilbert.c" in the Utah Raster Toolkit circa 1993, 
    http://web.mit.edu/afs/athena/contrib/urt/src/urt3.1/urt-3.1b.tar.gz 

* D. Moore, Fast Hilbert Curves in C, without Recursion 

* J.K.Lawder, Calculation of Mappings Between One and n-dimensional Values Using the Hilbert Space-filling Curve, [JL1_00]