<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hilbert on bramp.net</title>
    <link>https://blog.bramp.net/</link>
    <description>Recent content in Hilbert on bramp.net</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-GB</language>
    <lastBuildDate>Mon, 08 Aug 2016 21:35:35 -0700</lastBuildDate>
    <atom:link href="https://blog.bramp.net/tags/hilbert/" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Peano Curves</title>
      <link>https://blog.bramp.net/post/2016/08/08/peano-curves/</link>
      <pubDate>Mon, 08 Aug 2016 21:35:35 -0700</pubDate>
      
      <guid>https://blog.bramp.net/post/2016/08/08/peano-curves/</guid>
      <description><p>My latest addition to the <a href="https://github.com/bramp/hilbert">hilbert go library</a>, <a href="https://en.wikipedia.org/wiki/Peano_curve">Peano Curves</a>. The original space-filing curve, similar to the Hilbert curve, but a little more complex.</p>
<figure><img src="/post/2016/08/08/peano-curves/peano_animation.gif"><figcaption>
      <h4>Animation of Peano curve with N in the range 1..5</h4>
    </figcaption>
</figure>

</description>
    </item>
    
    <item>
      <title>Introducing Hilbert. A Go library to map values onto a Hilbert curve.</title>
      <link>https://blog.bramp.net/post/2015/08/07/introducing-hilbert/</link>
      <pubDate>Fri, 07 Aug 2015 20:53:41 -0700</pubDate>
      
      <guid>https://blog.bramp.net/post/2015/08/07/introducing-hilbert/</guid>
      <description><p>A <a href="https://en.wikipedia.org/wiki/Hilbert_curve">Hilbert curve</a> is a space-filling (snakey) curve through a 2D space:</p>
<figure><img src="/post/2015/08/07/introducing-hilbert/hilbert.png"><figcaption>
      <h4>Image of 8 by 8 Hilbert curve</h4>
    </figcaption>
</figure>

<p>This can be very useful for mapping a 1D value, into a 2D space. For example, it is commonly used to <a href="https://xkcd.com/195/">map IP addresses into a 2D space</a>.</p>
<p>I recently created a library for <a href="https://golang.org/">Go</a> that can map to and from a curve. The project is <a href="http://github.com/bramp/hilbert">hosted on Github</a>, and can be used like so:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="s">&#34;github.com/bramp/hilbert&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">// Create a Hilbert curve for mapping to and from a 16 by 16 space.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nx">s</span><span class="p">,</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">hilbert</span><span class="p">.</span><span class="nf">New</span><span class="p">(</span><span class="mi">16</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">// Now map one dimension numbers in the range [0, N*N-1], to an x,y</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">// coordinate on the curve where both x and y are in the range [0, N-1].</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nf">Map</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">// Also map back from (x,y) to t.</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nx">t</span><span class="p">,</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">s</span><span class="p">.</span><span class="nf">MapInverse</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">)</span><span class="w">
</span></span></span></code></pre></div><p>The project contains some demos, such as this cool animations:</p>
<figure><img src="/post/2015/08/07/introducing-hilbert/hilbert_animation.gif"><figcaption>
      <h4>Hilbert curve animation</h4>
    </figcaption>
</figure>

</description>
    </item>
    
  </channel>
</rss>
