PageSourceSearch

https://corte.si/posts/spacecurve/announce/

html corte.si collected 2026-09-24 09:29:15 UTC 5,055 bytes, 104 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3
4<head>
5  <meta charset="utf-8">
6  <title>corte.si</title>
7  <base href="https:&#x2F;&#x2F;corte.si&#x2F;posts&#x2F;spacecurve&#x2F;announce&#x2F;">
8  <link rel="stylesheet" href="/site.css">
9  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&display=swap">
10  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@7/css/materialdesignicons.min.css">
11  <link rel="alternate" type="application/atom+xml" href="https://corte.si/atom.xml" />
12
13  <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
14  <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
15  <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
16  <link rel="manifest" href="/site.webmanifest">
17  <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5">
18  <meta name="msapplication-TileColor" content="#da532c">
19  <meta name="theme-color" content="#ffffff">
20</head>
21
22<body>
23  
24<div class="container post">
25  <div class="header">
26    <a class="name" href="/">cortesi</a>
27    <div class="contact">
28        <a class="mail" href="mailto:[email protected]">[email protected]</a>
29        <a class="twitter" href="https://twitter.com/cortesi">
30            <i class="mdi mdi-twitter"></i>
31        </a>
32        <a class="github" href="https://github.com/cortesi">
33            <i class="mdi mdi-github"></i>
34        </a>
35    </div>
36</div>
37
38  <h1 class="title">
39    Spacecurve
40  </h1>
41  <p class="subtitle"><strong>2026-01-28</strong></p>
42  <div class="content">
43    <p>In 2024, I noticed that I'd let my blog languish. Since the issue was urgent, I
44made a firm new year's resolution to address the situation in 2025. Which is
45why, today, in January 2026, I'm writing this post.</p>
46<p>I've just released <a rel="external" href="https://github.com/cortesi/spacecurve">spacecurve</a>, a new
47just-for-fun space-filling curve project. It's is the latest symptom of a long
48preoccupation with these beautiuful mathematical objects. Over the years,
49this preoccupation yielded blog posts like <a href="/posts/visualisation/malware/">malware
50visualisations</a>, a <a href="/posts/code/hilbert/portrait/">portrait of the Hilbert
51curve</a> and tools like
52<a rel="external" href="https://binvis.io">binvis.io</a>. I have a long list of related ideas I never got
53to but have to wanted to explore, and the first step is naturally to... rewrite
54it in Rust. This is just a starting point, a base for exploring ideas I have
55about visualisation, color spaces, and the qualities of the curves themselves.</p>
56<p>As part of the rewrite we now have fast base implementations of the curves
57themselves in the <a rel="external" href="https://crates.io/spacecurve">spacecurve</a> library, and a
58visual exploration tool for 2D and 3D curves in the
59<a rel="external" href="https://crates.io/crates/scurve">scurve</a> command-line tool. Thanks to
60<a rel="external" href="https://egui.rs">egui</a>, the visualiser runs both natively and in the browser.</p>
61<p>Click through on the images below to see the web version.</p>
62<div class="media-grid media-stack">
63<div class="media media-frame">
64    <a href="&#x2F;spacecurve&#x2F;index.html">
65        <img src=".&#x2F;2d.png" alt="2D rendering of Spacecurve"  />
66    </a>
67
68    
69</div>
70</div>
71<div class="media-grid media-stack">
72<div class="media media-frame">
73    <a href="&#x2F;spacecurve&#x2F;index.html">
74        <img src=".&#x2F;3d.png" alt="3D rendering of Spacecurve"  />
75    </a>
76
77    
78</div>
79</div>
80<h2 id="installation">Installation</h2>
81<p><strong>spacecurve</strong> is a Rust library for generating a variety of space-filling
82curves, including Hilbert, Peano, Sierpinski, Moore, and Z-order curves.</p>
83<pre class="giallo" style="color: #24292E; background-color: #FFFFFF;"><code data-lang="shellscript"><span class="giallo-l"><span style="color: #6F42C1;">cargo</span><span style="color: #032F62;"> add spacecurve</span></span></code></pre>
84<p><strong>scurve</strong> is a command-line tool for generating and visualizing space-filling
85curves.</p>
86<pre class="giallo" style="color: #24292E; background-color: #FFFFFF;"><code data-lang="shellscript"><span class="giallo-l"><span style="color: #6F42C1;">cargo</span><span style="color: #032F62;"> install scurve</span></span></code></pre>
87<p>It includes an egui interface for exploring the curves in 2D and 3D, which you
88can run like this:</p>
89<pre class="giallo" style="color: #24292E; background-color: #FFFFFF;"><code data-lang="shellscript"><span class="giallo-l"><span style="color: #6F42C1;">scurve</span><span style="color: #032F62;"> gui</span></span></code></pre><h2 id="spacecurve-web">spacecurve web</h2>
90<p>Because egui supports webassembly, I've also deployed the egui app to the web.
91Access it by clicking below, or on any of the images above.</p>
92<p><a href="/spacecurve/index.html">Web Viewer</a></p>
93
94  </div>
95</div>
96
97  <footer class="site-footer">
98    <div class="container">
99      &copy; Aldo Cortesi
100    </div>
101  </footer>
102</body>
103
104</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.