## Thoughts on the Original Design

The motivation for constructing a transversion-based spatial automaton was to construct a surface in 3D Euclidean space from as little local geometric information as possible. It was the automaton’s role to expand the information into a fully specified surface of arbitrary complexity. Essentially, this is a problem of differential geometry with a little bit of analysis (particularly complex harmonic functions) thrown in.

The original design was essentially a straight translation into (Geometric Algebra) GA elements of the standard approaches differential geometry uses to analyze local surface properties and particularly curvature. The idea was to have two spheres, each representing one of the two principal surface coordinates and to relate the size of the spheres to instantaneous curvature. By inverting a differential surface element into the two spheres, the Transversion Machine incrementally constructed patches of the surface.

While the design worked, it was unwieldy and suffered from some interpolation issues that lead to closed paths not actually closing like they should. The primary issue was figuring out how to update the automaton on each step. Essentially, this involved rotating and translating the entire machine to be centered at the new surface point in order to continue extended the surface while simultaneously warping with a transversion operation the two spheres such that their radii corresponded to the new local curvature values. In the end, there were just too many loosely connected transformations to keep in sync, so the mechanism felt cobbled together and inelegant. Furthermore, it wasn’t at all clear how the input curvature values parameterizing the Transversion Machine mapped to its internal transformations.

## Hyperbolic Inspiration

In the back of my mind, I kept thinking that there had to be another way to organize things such that it just worked, every element was tightly integrated, and the input parameters mapped in a straightforward manner to the controls of the machine. Fortunately, inspiration struck while I was working on understanding hyperbolic translations.

Hyperbolic translations are just like Euclidean translations in that they move along a line. The difference is that lines in hyperbolic space are actually Euclidean circles when the Poincaré model of hyperbolic geometry is used. The one exception is for lines that pass through the center of the unit disc. These hyperbolic lines are circles of infinite radius and thus also Euclidean lines. I then wondered how this fact could be used to redesign the Transversion Machine since it also needs to be able to smoothly move between rounds such as circles and spheres to flats such as lines and planes. This kind of behavior allows it to smoothly model changes in curvature from positive to flat to negative curvature. The only question is how to make such a mapping.

## Test 1: Real and Imaginary Spheres

One of the unique features of GA is that many objects come in both real and imaginary forms. For instance, spheres are called **real** if they have a positive radius and **imaginary** if they have a negative radius. While it may seem strange for a sphere to have a negative radius, it has profound consequences for the interpretation of the geometry of a particular arrangement of geometry objects. For instance, when two spheres intersect, they generate a real circle. If they don’t intersect, they generate an imaginary circle. Importantly, the magnitude of the imaginary circle indicates how far apart the two spheres are.

Since the curvature of a surface varies from positive through zero to negative values, I wondered if some way of transforming spheres between real and imaginary states could be used to implement the Transversion Machine. As a first test, I placed a line tangent to both a real and imaginary sphere colocated in space and with radii of the same magnitude but of opposite sign. The two spheres are given by \(S_{real} = o – \frac{\infty}{2}\) and \(S_{imaginary} = o + \frac{\infty}{2}\).

On the left is a single instance of inverting a line by a sphere. The pink circle is generated by the real sphere while the blue is generated by the imaginary sphere. The inversion is described by \(Circle = SLS^{-1}\). What’s curious is how the imaginary and real spheres result in exactly the same shape but on opposite sides of the center of the inversion sphere.

When I saw this image, my first thought was that I could map the inversion sphere’s radius to surface curvature with the convenient mapping of imaginary spheres describing negative curvature (hyperbolic patches). The only question then is how to smoothly vary the spheres.

First, however, I did the easy thing and varied the position of the line. The image on the right shows what happens when the line is varied from the center of the inversion sphere to the right. When the line is in the center, the inversion is an identity operation mapping the line to itself. As it moves to the right, the resulting circles vary in radius, smoothly shrinking to a point if the line was infinitely far away. Notice that the is exclusively to the right hand side of the inversion sphere’s center. If it was on the left, the real and imaginary circles would swap sides too. This is the answer to the question as to how to vary the size of the curvature spheres. We can simply move a plane (line) in space to generate the appropriate sized sphere. What’s really nice about this setup is it’s basically a spatial slider for controlling curvature that generates exactly the kind of geometry we need and takes precisely the kind of input we have, a scalar curvature value. We can map this curvature value to displacement along an axis running through the center of the inversion sphere. As a further bonus, the current point on the surface that the Transversion Machine is operating from is located at the center of the inversion sphere.

In the end, we don’t actually need the imaginary sphere, but it’s nice to know how it operates with respect to spherical inversion for future problems.

## Test 2: Circular Rigid Body Motion

The second problem in the original design was interpolating the motion of the Transversion Machine according to how the surface bends at each point. The transformation describing the motion is a rigid body motion through space that rotates the machine around a circle. The transformation is given by \(V = exp(\infty\rfloor{}\frac{L}{2})\).

The image above show the action of the circular rigid body motion. The diagrams are slightly skewed to show the axis of the circle since it comes out of the page. The axis is a dual line, which is a bivector inducing the motions in the images. Of course, the motion needed by the Transversion Machine is not arbitrary. It needs to be scaled such that it moves the Transversion Machine around the circle in fixed number of steps. To do this, we have to scale the circle such that its norm is equal to the distance travelled by each step around the circle. The following algorithm generates a motion around the circle in N steps from a line \(L\) and an inversion sphere \(S\):

- Generate the circle that will move the Transversion Machine: \(C = SLS^{-1}\).
- Normalize the circler: \(C_n = \frac{C}{\sqrt{C*C}}\).
- Calculate the versor representing the transformation and scale by the length of the circular arc: \(V = exp(-\infty\rfloor{}\frac{C_n}{2}\frac{2\pi{}R}{N})\).
- Transform the Transversion Machine inversion sphere and coordinate axis line: \(S = VSV^{-1}, L = VSV^{-1}\).

Pingback: Ross