Developing Space-Filling Fractals

Delving deeper into the world of mathematics, fractals, geometry, and space-filling curves.



Following my last post on the “…first, second, and third dimensions, and why fractals don’t belong to any of them…“, this post is about documenting my journey as I delve deeper into the subject of fractals, mathematics, and geometry.
The study of fractals is an intensely vast topic. So much so that I’m convinced you could easily spend several lifetimes studying them. That being said, I chose to focus specifically on single-curve geometry. But, keep in mind that I’m only really scratching the surface of what there is to explore.

4.0 Classic Space-Filling

Inspired by Georg Cantor’s research on infinity near the end of the 19th century, mathematicians were interested in finding a mapping of a one-dimensional line into two-dimensional space – a curve that will pass through through every single point in a given space.
Jeffrey Ventrella writes that “a space-filling curve can be described as a continuous mapping from a lower-dimensional space into a higher-dimensional space.” In other words, an initial one-dimensional curve is developed to increase its length and curvature – the amount of space in occupies in two dimensions. And in the mathematical world, where a curve technically has no thickness and space is infinitely vast, this can be done indefinitely.

4.1 Early Examples

In 1890, Giuseppe Peano discovered the first of what would be called space-filing curves:

Peano-space-filling-Curve_-four-approximations_-version-A_1 4i.gif
4 Iterations of the Peano Curve
An initial ‘curve’ is drawn, then each element of the curve is replace by the whole thing. Here it is done four times, and it’s easy to imagine how you can keep doing this over and over again. One would think that if you kept doing this indefinitely, this one-dimensional curve would eventually fill all of two-dimensional space and become a surface. However it can’t, since it technically has no thickness. So it will be as close as you can get to a surface, without actually being a surface (I think.. I’m not that sure..)
A year later, David Hilbert followed with his slightly simpler space-filing curve:
Hilbert_curve 8i.gif
8 Iterations of the Hilbert Curve
In 1904, Helge von Koch describes a single complex continuous curve, generated with rudimentary geometry.
Von_Koch_curve 7i.gif
7 Iterations of the Koch Curve
Around 1967, NASA physicists John Heighway, Bruce Banks, and William Harter discovered what is now commonly known as the Dragon Curve.
Dragon_Curve_Unfolding 13i.gif
13 Iterations of the Dragon Curve

4.2 Later Examples

You may have noticed that some of these curves are better at filling space than others, and this is related to their dimensional measure. They fall under the category of fractals because they’re neither one-dimensional, nor two-dimensional, but sit somewhere in between. For these examples, their dimension is often defined by exactly how much space they fill when iterated infinitely.
While these are some of the earliest space-filling curves to be discovered, they are just a handful of the likely endless different variations that are possible. Jeffrey Ventrella spent over twenty-five years exploring fractal curves, and has illustrated over 200 hundred of them in his book ‘Brain-Filling Curves, A Fractal Bestiary.’ They are organised according to a taxonomy of fractal curve families, and are shown with a unique genetic code.
Incidentally, in an attempt to recreate one of the fractals I found in Jeffery Ventrella’s book, I accidentally created a slightly different fractal. As far as I’m concerned, I’ve created a new fractal and am unofficially naming it ‘Nicolino’s Quatrefoil.’ The following was created in Rhino and Grasshopper, in conjunction Anemone.
Nicolino-Quatrefoil_Animation i5.gif
5 Iterations of Nicolino’s Quatrefoil
You can find beautifully animated space-filling curves here:
(along with some other great videos by ‘3Blue1Brown’ discussing the nature of space-filling curves, fractals, infinite math, and more)

On A Strange Note:

It’s possible to iterate a version of the Hilbert Curve that (once repeated infinity) can fill three-dimensional space.
As an object, it seems perplexingly difficult to categorize. It is a single, one-dimensional, curve that is ‘bent’ in space following simple, repeating rules. Following the same logic as the original Hilbert Curve, we know that this can be done indefinitely, but this time it is transforming into a volume instead of a surface. (Ignoring the fact that it is represented with a thickness) It is a one-dimensional curve transforming into a three-dimensional volume, but is never a two-dimensional surface? As you keep iterating it, its dimension gradually increases from 1 to eventually 3, but will never, ever, ever be 2??
Nevertheless this does actually support a statement I made in my last post suggesting “there is no ‘first’ or ‘second’ dimension. It’s a bit like pouring three cups of water into a vase and asking someone which cup is the first one. The question doesn’t even make sense…

5.0 Avant-Garde Space-Filling

In the case of the original space-filling curve, the goal was to fill all of infinite space. However the fundamental behaviour of these curves change quite drastically when we start to play with the rules used to generate them. For starters, they do not have to be so mathematically tidy, or geometrically pure. The following curves can be subdivided infinitely, making them true space-filling curves. But, what makes them special is the ability to control the space-filling process, whereas the original space-filling curves offer little to no artistic license.

5.1 The Traveling Salesman Problem

Let’s say that we change the criteria, from passing through every single point in space, to passing only through the ones we choose. This now becomes a well documented computational problem that has immediate ‘real world’ applications.
Our figurative traveling salesman wishes to travel the country selling his goods in as many cities as he can. In order to maximize his net profit, he must make his journey as short as possible, while of course still visiting every city on his list. His best possible route becomes exponentially more challenging to work out, as even just a handful of cities can generate thousands of permutations.
There are a variety of different strategies to tackle this problem, a few of which are described here:
The result is ultimately a single curve, filling a space in a uniquely controlled fashion. This method can be used to create single-lined drawings based on points extracted from Voronoi diagrams, a topic explored by Arjan Westerdiep:
Traveling Salesman Portrait.png
This illustration, commissioned by Bill Cook at University of Waterloo, is a solution to the Traveling Salesman Problem.

5.2 Differential Growth

If we let physics (rather than math) dictate the growth of the curve, the result becomes more organic and less controlled.
In this example Rhino is used with Grasshopper and Kangaroo 2. A curve is drawn on a plain, broken into segments, then gradually increased in length. As long as the curve is not allowed to cross itself (which is achieved here with ‘Collision Spheres’), the result is a curve that is pretty good at uniformly filling space.
Differential Growth with Rhino & Grasshopper – Kangaroo 2 – Planar
The geometry doesn’t even have to be bound by a planar surface; It can be done on any two-dimensional surface (or in three-dimensions (even higher spacial dimensions I guess..)).
Differential Growth with Rhino & Grasshopper – Kangaroo 2 – NonPlanar
Differential Growth with Rhino & Grasshopper – Kangaroo 2 – Single-Curved Stanford Rabbit
Additionally, Anemone can be used in conjunction with Kangaroo 2 to continuously subdivide the curve as it grows. The result is much smoother, as well as far more organic.
Kangaroo & Anemone - Octo-Growth.gif
Differential Growth with Rhino & Grasshopper – Kangaroo 2 & Anemone – Octopus
Of course the process can also be reversed, allowing the curve to flow seamlessly from one space to another.
Kangaroo & Anemone - Batman Duck.gif
Differential Growth with Rhino & Grasshopper – Kangaroo 2 & Anemone – BatmanDuck
Here are far more complex examples of growth simulations exploring various rules and parameters:

6.0 Developing Fractal Curves

In the interest of creating something a little more tangible, it is possible to increase the dimension of these curves. Recording the progressive iterations of a space filling curve allow us to generate what is essentially a space-filling surface. This new surface has the unique quality of being able to fill a three-dimensional space of any shape and size, while being a single surface. It of course also shares the same qualities as its source curves, where it keep increasing in surface area (and can do so indefinitely).
Unrolling Surfaces.jpg
Surface Unrolling Study
If you were to keep gradually (but indefinitely) increasing the area of a surface this way in a finite space, the result will be a two-dimensional surface seamlessly transforming into a three-dimensional volume.

6.1 Dragon’s Feet

Here is an example of turning the dragon curve into a space-filling surface. Each iteration is recorded and offset in depth, all of which inform the generation of a surface that loosely flows through each of them. This was again achieved with Rhino and Grasshopper.
I don’t believe this geometry has a name beyond ‘the developing dragon curve’, so I’ve called it ‘Dragon’s Feet.’
Adding a little thickness to the model allow us to 3D print it.
3d Printed Dragon Curve.jpg
Developing Dragon Curve: Dragon’s Feet – 3D Print

6.2 Hilbert’s Curtain

Here is the Hilbert Curve going through the same process, which I am aptly naming ‘Hilbert’s Curtain.’
3D Printed Developing Hilbert Curve
Developing Hilbert Curve: Hilbert’s Curtain – 3D Print
3D Printing Space-Filling Curves with Henry Segerman at Numberphile:
‘Developing Fractal Curves’ by Geoffrey Irving & Henry Segerman:

6.3 Developing Whale Curve

Unsurprisingly this can also be done with differentially grown curve. The respective difference being that this method fills a specific space in a less controlled manner.
In this case with Kangaroo 2 is used to grow a curve into the shape of a whale. Like before, each iteration is used to inform a single-surface geometry.
Iterative Steps of the Differentially Grown Whale Curve

3D print of the different recursive steps of a space-filling curve
Developing Whale Curve – 3D Print

16th January 2014 Tutorial

Happy new year! We are back and had our first tutorials session today. Students are submitting their portfolio on Tuesday and have started the last brief (see all our briefs for the year here). Here are two projects which are worth sharing for the following reasons:

  • Ieva Ciocyte’s elevation and plan drawings are very clear, with attention to details: traced Burning Man people, perfect shadows and lineweights, labels and dimensions. It just looks good.
  • Andrei Jipa manipulated the G-Code of his 3D Prints to create a continuous extrusion. Instead of slicing the prints horizontally, he generated a print path that follows the geometry and goes up in a spiral.

More beautiful projects on Tuesday evening!

Elevation 1 - Ieva Ciocyte Interlocking Plywood Tower
Elevation  1  – Ieva Ciocyte Interlocking Plywood Components Tower
Elevation 1 - Ieva Ciocyte Interlocking Plywood Tower
Elevation 2 – Ieva Ciocyte Interlocking Plywood Components Tower
Plan - Ieva Ciocyte Interlocking Plywood Tower
Plan – Ieva Ciocyte Interlocking Plywood Components Tower
Andrei Jippa's 3D printed intersecting component - Strange Attractors
Andrei Jipa’s 3D printed intersecting components made from a custom G-Code and used for his Strange Attractors pavilion
Andrei Jippa's 3D printed intersecting component - Strange Attractors
Andrei Jipa’s 3D printed intersecting components made from a custom G-Code and used for his Strange Attractors pavilion
Andrei Jippa's 3D printed intersecting component - Strange Attractors
Andrei Jipa’s 3D printed intersecting components made from a custom G-Code and used for his Strange Attractors pavilion

A Week at Grymsdyke Farm

We just finished our week at Grymsdyke Farm, Buckinghamshire. Ten students spent about two nights each working on their individual projects, building a 1:1 to 1:5 prototype using the available technology: a CNC Milling Machine (with RhinoCam), a laser cutter, a Z-Corp and a RepRap 3Dprinter.

DS10 would like to thank Guan Lee, Ed Grainge and Kate for their precious help and patience on the CNC, Jessie Lee and Keith McDonald for their great advices!

Below are some pictures of the week.

121213_Farm_71Above: Dhiren Patel’s “Ear Parabola” being assembled

121213_Farm_59Above: Dan Dodds testing the fiber optic cables of his Sectionned Harmonograph

121213_Farm_115Above: Emma Whitehead cutting her convection cell models out of plywood

121213_Farm_123Above: Thanasis Korras’ CNC milled components for his giant fractal building.


When researching the close packing of tetrahedrons I came across a reasonably new discovery, The Quasicrystal.  Its current impact or potential impact can be gauged by the fact that Dan Shechtman, who made the finding, was this year awarded the Nobel Prize in Chemistry.

“Quasicrystals are a fascinating aspect of chemical and material science – crystals that break all the rules of being a crystal at all.”

So what is a Quasicrystal?

Basically they are formed when tetrahedra are compressed into a given volume. In Dan Shechtman’s discovery, the packing achieves an efficiency which fills 82% of space, higher than any previous effort.  The close packing of the tetrahedron forms these intricately complicated and amazingly complex structures. A normal crystal is a material structure which repeats periodically however one of the really interesting things about Quasicrystals is that they don’t actually repeat exactly, despite its regularity.  Quasicrystals represent a class of solids which lack translational symmetry, but nevertheless exhibit perfect long-range order and reveal well defined fivefold rotational symmetries. Translational symmetry is when an image or object can be divided into a sequence of identical repetitions which are translated about a given vector. So without this form of symmetry the Quasicrystal is non-periodic.

Aperiodic and Penrose tiling’s can also be found within Quasicrystals which themselves can be found in medievil Islamic mosaics.

The model shown in the second image is made up of 4000 x 1cm long struts, built thanks to 3D printing!

For further information follow the link below.

Alternative fabrication methods using sand

Following on from the tutorial yesterday where Jack talked about possibly casting his experiments with sand using a saline solution sprayed onto the forms created here are two further ways of utilising sand to create rigid structures.

Markus Kayser - Solar Sinter

The first is a 3D printer which concentrates the solar energy to form glass structures from the sand the machine sits on. I know many of you have seen this before but I thought I’d post it in relation to this specific topic. The link is to designboom, a great website with daily updates from the latest innovations in architecture, art and design. Check out the link to find further information on Markus Kayser’s printer.

The second is a TED lecture given by Magnus Larsson. He proposes an ambitious project to stop desertification in the Sahara by literally forming a wall across the continent using the desert sands as a bulding material.

If anyone wants to edit this post to try and embed the video from the TED lecture go ahead, I can’t get it to work with their f=video format but that may just be me.

Printing Food

Fast Company has published an article on printing food which talks about the Cornell Machines Lab‘s work and more specifically Jeffrey Lipton‘s group.  The latter looks at how Solid Free Form Technology (SFF) will “fundamentally change the ways we produce and experience food”. They have published a paper called “Hydrocolloid Printing: A Novel Platform for Customized Food Production” explaining the main advantages of this technique which are mainly artistic, allowing experimental Chefs to create new dishes which could not have been done before. Laypeople could print these new creations from home too.

CNN Money‘s website shows one of these machines used by the French Culinary Institute.

The Printing Food Project is part of larger group, the Fab@Home which aims to make 3D printers and other new fabrication technology affordable to everyone.

The Printer with two different eatable ink

A printer in action as shown on the CNN video at the French Culinary Institute