# The Quaternion Bulb

My three dimensional unfolding of the quaternion Julia sets finally finished rendering. There are a fair bit of compression artifacts in the embedded version, click on the Vimeo button on the bottom right side of the video to watch it in full quality HD.

Since each quaternion can be described using four numbers, I unfolded these four dimensional quaternion Julia sets into three dimensional space, and animated the final coefficient. But once I did that I noticed some radial symmetry along the y-z plane – it looks like something that’s been made on a lathe. This means that we can “index” all these shapes in a more sensible manner by collapsing things along this axis of symmetry. While previously we could index all of our shapes with four coefficients a, b, c, and d. We can now index them with four coefficients a, r, theta, and d after this transformation. But there’s a nice side effect now that our coordinate system reflects our symmetry – if we vary theta, the appearance of the Julia set doesn’t change, the object just appears to rotate about the a axis. So really we can index all possible shapes using only three coefficients – a, r, and d. This is awesome – it means we can use this symmetry to collapse a dimension and completely illustrate a discrete approximation of this four dimensional set in three dimensional space. The following images (click for 1080p full resolution images) illustrate the full set of these possible shapes – a is the horizontal axis, r is the vertical axis, and values iterate by 0.25. The grey sphere in the first image is the origin, and the images start at a d value of 0 and iterate upward by 0.25. We find that there exists additional symmetry with our d parameter – namely that d = -d, so we only need to illustrate the absolute value to see all shapes.

When d = 1.25 there are only a few bits of unconnected dust loops visible. This analysis only covers a single “slice” – namely the plane normal to (0,0,0,1). I’d be very interested to see if there are any other symmetries…