# \[ANN\] BijectiveHilbert.jl: Compute Hilbert curves in multiple dimensions

**URL:** https://discourse.julialang.org/t/ann-bijectivehilbert-jl-compute-hilbert-curves-in-multiple-dimensions/56301
**Category:** Package Announcements
**Tags:** package, announcement, clustering
**Created:** [March 2, 2021, 5:17am UTC](https://discourse.julialang.org/t/ann-bijectivehilbert-jl-compute-hilbert-curves-in-multiple-dimensions/56301 "2021-03-02T05:17:23Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![adolgert](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adolgert/32/20286_2.png) [@adolgert](https://discourse.julialang.org/u/adolgert)
#### Post date: [March 2, 2021, 5:17am UTC](https://discourse.julialang.org/t/ann-bijectivehilbert-jl-compute-hilbert-curves-in-multiple-dimensions/56301/1 "2021-03-02T05:17:23Z")

</div>

The Hilbert curve algorithm provides a simple way to cluster data for faster storage and retrieval. It’s used to distribute work among high-performance computers. There is a version of R-trees that uses Hilbert curves to optimize node placement. The algorithm shows up in visualization, optimization, and resource allocation.

The [BijectiveHilbert.jl package](https://github.com/adolgert/BijectiveHilbert.jl) implements five versions of the Hilbert curve. All are type-stable and tested with factorial test designs. They include a fast 2D version, multiple N-dimensional algorithms, and one that creates Hilbert curves for N-dimensional cubes with varying side lengths.

[![](https://global.discourse-cdn.com/julialang/original/3X/b/0/b035f1e6efdf8dd1fb9a3dec0f754b4be2fb5947.jpeg "Three-dimensional Hilbert curve, colored by Hilbert index") ](https://www.youtube.com/watch?v=ptpqqTT8fLI)

The Hilbert curve can be very handy for ad-hoc clustering if you have it on-hand. I wanted to make a solid version available.

Hope All Is Well - Drew
