3D Julia Blobs: An Idea

Since the Julia Set depends on the function fc(z) = z2 + c, where z and c are complex numbers, it’s therefore four-dimensional, and we can thus create 3D shapes from the Julia Set by taking hyperplanes of the form u∙Re(z)+v∙Im(z)+w∙Re(c)+x∙Im(c)=y where they intersect the hypercuboid (-2,-1,-2,-1) – (2,1,2,1). (Or is it the hypercube (-2,-2,-2,-2) – (2,2,2,2)? I don’t remember my reasoning behind those 1’s.) Our 4D viewing angle should obviously be perpendicular to the hyperplane so that the image doesn’t appear stretched. I’ve only experimented with hyperplanes where u = v = 0, or in other words, stacks of normal Julia fractals where c traverses some line through the complex plane. Other such hyperplanes might not work so well, since I think that fractals along w = x = 0 might just be rough circles. 

We could have controls for manipulating the hyperplane’s rotations on all six 4D axes and manipulating the 3D viewing of the hyperplane on all three 3D axes. We could show the results on a computer monitor using a voxel/point-cloud rendering library. We could also turn these 3D shapes into physical objects by using solid freeform fabrication of some sort, such as 3D printers. Some shapes may contain disconnected discrete parts. In those cases we can (a) connect parts together using thin metal or clear rods; (b) fabricate the inverse of a shape using a clear material within its bounding polyhedron; (c) fabricate the polyhedron in two colors, clear for outside of the Julia Set and some opaque or semitransparent color for inside of it; or (d) use a laser-etched crystal/glass block, or ideally, not a block but the shape of the intersection of the hyperplane through the bounding hypercuboid. For a more artistic look we can smooth out the shape by using a small number of iterations. 

If we don’t need closed shapes, then we can explore/fabricate the 3-d boundaries of Julia Set hyperplanes at arbitrary scales. We can also do this with closed shapes in the limited ranges where our hyperplane only intersects the very edge of the Julia Set.

I’ve actually tried to make programs to do this a number of times, but I failed because I couldn’t figure out how to use any of the available voxel rendering libraries.

Here are the libraries I’ve found: GVDB Voxels, GigaVoxels, Volpak, Visualization Toolkit, and Point Cloud Library. I think there might have been another one that I couldn’t install that I may have forgotten the name of.

Since I can’t do this, I hope somebody else does.

Leave a Reply