As the first commenter on the site pointed out, the Hilbert Curve is probably a better choice ( https://en.m.wikipedia.org/wiki/Hilbert_curve )
The big advantage of Z-order curves is that the addressing computation is very cheap, which is why it's used a lot in computer graphics.
Z-order curve usage to decrease dimensionality to 1
11–20 of 35 posts
Re: Z-order curve usage to decrease dimensionality to 1
#12Earlier quoted context omitted.
The big advantage of Z-order curves is that the addressing computation is very cheap, which is why it's used a lot in computer graphics.
Hilbert curves are used in a lot of graphics too. Heck, the old SGI Octane with Vpro graphics used a recursive Hilbert curve rasterizer. They show up a lot today in geospatial big-data since hilbert addresses make good shard keys.
I haven’t ever seen any convincing benchmarks or other analysis where the Hilbert curve created any notable performance advantage vs. Z order; the only time you really need it is if moving along the linearized coordinate must never have jumps in the multidimensional coordinates, but I’m not convinced there are many if any real-world cases where that is important (note that in either case small movements in the multidimensional coordinates are associated with large jumps in the linearized coordinate). If the only goal is to minimize memory fetches, etc. then the Z ordering works just fine.
(If you know any good comparisons where the Hilbert curve comes out ahead, I’d be curious to read them.)
Re: Z-order curve usage to decrease dimensionality to 1
#13Re: Z-order curve usage to decrease dimensionality to 1
#14http://blog.christianperone.com/2015/08/googles-s2-geometry-...
And 2015 HN thread: https://news.ycombinator.com/item?id=10066616
Re: Z-order curve usage to decrease dimensionality to 1
#15Re: Z-order curve usage to decrease dimensionality to 1
#16As the first commenter on the site pointed out, the Hilbert Curve is probably a better choice ( https://en.m.wikipedia.org/wiki/Hilbert_curve )
The big advantage of Z-order curves is that the addressing computation is very cheap, which is why it's used a lot in computer graphics.
https://github.com/leni536/fast_hilbert_curve
I only implemented the index->XY calculation yet. It compiles to 36 instructions without any branches and takes up 86 bytes.
https://github.com/leni536/fast_hilbert_curve/wiki/How-effic...
I think I can apply the same tricks for the inverse function too.
Re: Z-order curve usage to decrease dimensionality to 1
#17As the first commenter on the site pointed out, the Hilbert Curve is probably a better choice ( https://en.m.wikipedia.org/wiki/Hilbert_curve )
http://www.akt.tu-berlin.de/fileadmin/fg34/publications-akt/...
https://www.reddit.com/r/ProgrammerHumor/comments/4xzi9a/oh_...
Re: Z-order curve usage to decrease dimensionality to 1
#18As the first commenter on the site pointed out, the Hilbert Curve is probably a better choice ( https://en.m.wikipedia.org/wiki/Hilbert_curve )
H-curves are probably optimal with regards to locality, but good luck finding an implementation: http://www.akt.tu-berlin.de/fileadmin/fg34/publications-akt/... https://www.reddit.com/r/ProgrammerHumor/comments/4xzi9a/oh_...
Re: Z-order curve usage to decrease dimensionality to 1
#19Re: Z-order curve usage to decrease dimensionality to 1
#20So how would https://xkcd.com/195/ look using a z-curve instead?