# Torus knots on hyperboloids (part 2)

In the post Hyperboloidal Representation of Torus Knots we gave an explicit construction of T(p,q) torus knots and links where the knots are polygonal and the edges lie on two distinct hyperboloids of one sheet. As the knot is traversed, the edges alternate between lying on the first then the second hyperboloid. Each hyperboloid of one sheet is a doubly ruled surface (as described in the post Doubly ruled surfaces). For each of the hyperboloids the edges of the torus knot lie in one of the rulings.

The T(3,5) torus knot lying on two hyperboloids of one sheet.

I wanted to be able to create a 3D-printable model that showed both the T(p,q) knot and the two hyperboloids of one sheet. I used Cinema 4D to do this, and ended up making several attempts to get things just right.

The T(3,5) torus knot was constructed as described in the post Hyperboloidal Representation of Torus Knots. To sum up, the vertices were computed, then the knot was constructed in the standard way.  There are two relatively easy ways to construct the two hyperboloids of one sheet. In the computation for the vertices, we can find an explicit formula for the hyperboloids. We could parametrize a generating hyperbola curve for the hyperboloid, put it into the Formula tool, then use a Lathe tool to rotate the curve around the y-axis. (Remember that in Cinema 4D, the y-axis points up.)

The edges of the T(3,5) torus knot lie on these two hyperboloids of one sheet.

Rather than do this, I kept things simple. I added an Empty Spline, opened the Structure Manager, then added in the first three vertices of the T(3,5) torus knot. This created the first two edges of the knot. However, these had the wrong orientation – the vertices were entered for the standard xyz-orientation, not the orientation in Cinema 4D. I thus went into Model mode, and rotated the vertices 90o in the y-direction. I then added a Lathe and moved the Spline under the Lathe. (The reason why this works can be found in the post Doubly ruled surfaces – the formulas explicitly show that you can take one line segment in a ruling and rotate it around the z-axis to create the surface.) At this point the surface had many obvious edges. I went back into the Spline and edited the Object Properties: the Type is Linear, the Intermediate Points is Uniform, the Number is 50. (For some reason Bezier gives a bad looking surface.) I went back into the Lathe and edited the Object Properties. Here I increased the Subdivision to 50.

One of the errors I first made when constructing this surface was to take the coordinates of the vertices of the T(3,5) knot from the 3D printable model. This was a mistake, as the original vertices had been replaced by two nearby vertices for the Chamfer at the corners. This meant the two hyperboloids of one sheet where not correct.

The T(3,5) knot on the two hyperboloids of one sheet.

At this point, we can put the object in a better form for 3D printing. One of the adjustments I made was to scale the hyperboloid surface up slightly. When 3D printed, the top and bottom edges of this surface end up each print as one single filament. This can be problematic to print. So increasing the size of the surface slightly gives a bit of wiggle room.  I used the Boole tool (A union B)  to join the hyperboloid surface to the knot. In order to even see the union of these two surfaces, I needed to turn off High Quality in the Object Properties of the Boole. I also created one object from the Boole by going to the Object menu of Objects and then “Current State to Object”. On the new Boole that was created, I selected  “Connect objects + Delete”. I’m not sure these last two steps are entirely necessary. I’ve noticed that the slicing programs for 3D printers are increasingly sophisticated and are able to handle objects that aren’t completely correctly triangulated much more easily than in the past.

The hyperboloid surface without the T(3,5) torus knot.

Finally, I wanted to be able to 3D print the knot in one color and the surface in a different color. I went back into Cinema 4D and created several files. The first was the knot, the second was the surface without the knot. I created this using the Boole tool and the “A subtract B” option. I then printed the surface and the knot on an Ultimaker 5 printer. I had trouble printing this surface as the printer added in unnecessary supports. This is a work in progress! I’ll post an update with a correctly printed knot when we make it happen.

# Doubly-ruled surfaces

An example of a hyperboloid of one sheet.

Some of the most interesting quadratic surfaces are the doubly-ruled surfaces: the hyperboloid of one sheet (like x2+y2-z2=1)  and the hyperbolic paraboloid (like z=x2-y2). These surfaces have made an appearance in this blog previously when we discussed how to create good 3D printable models of these surfaces.

An example of a hyperbolic paraboloid.

Ruled surfaces have been studied extensively in geometry. Formally, a ruled surface is a surface which is a union of straight lines. The straight lines are called rulings (or the generators) of the surface. An example to think about is a cylinder: this is a union of straight lines, each of which intersects a circle. Just as with the circle and the cylinder, in a general ruled surface there is a curve in space which intersects each of the lines. Thus the surface can easily be parametrized as follows. Let g:(a,b)->R3 be a parametrization of the curve on the surface, let vt be a vector at point g(t) which points in the direction of the line passing through g(t). Then the surface is parametrized by f:(a,b)x(c,d)->R3 defined by f(t,s) = g(t)+svt.

A helicoid. Image from https://minimalsurfaces.blog/

A nice example of such a surface is the helicoid where lines parallel to the xy-place pass through each point of a helix (for example parametrized by g(t)=(cos(t), sin(t),t)). One possible parametrization of a helicoid is f(t,s) = (s.cos(t), s.sin(t), t).  Ruled surfaces are very familiar to us, if the rulings are all parallel to each other, then the ruled surface is a generalized cylinder. For example, the surface given by y=x2 in R3 is a generalized cylinder parametrized by f(t,s)=(t,t2,s).

The two rulings on a hyperbolic paraboloid surface.

Now there are surfaces which are doubly-ruled surfaces, meaning that each point of this surface belongs to two distinct lines. In other words, this surface has two distinct rulings. You can use projective geometry to show that this surface, the plane, and the hyperboloic paraboloid are the only surfaces that have this property. Robert Byrant has a nice proof of this fact using differential geometry in a 2012 Math Overflow post

Let us focus our attention on the hyperboloid one sheet given by  x2+y2-z2=1.  To give explicit equations for the two rulings, I will follow the text Elementary Differential Geometry by Andrew Pressley. For every t, we can show the straight line Lt given by $(x-z)\cos t=(1-y)\sin t, \ \ \ (x+z)\sin t = (1+y)\cos t$ lies on the surface. To see this, multiply the two equations together to get $(x^2-z^2)\sin t\cos t =(1-y^2)\sin t\cos t.$ in other words x2+y2-z2=1 unless cos(t)=0 or sin(t)=0. If cos(t)=0, then x=-z and y=1, and if sin(t)=0 then x=z and y=-1, and both of these lines lie on the surface. A short computation reveals that for each t,  line Lt contains the point (sin(2t),-cos(2t), 0) and is parallel to the vector (cos(2t), sin(2t), 1). We thus get all lines in one ruling for t in [0,π).

One set of rulings on a hyperboloid of one sheet.

We now show that any point on the hyperboloid lies on one of these lines. Take a point (x,y,z) on the surface x2+y2-z2=1. If x does not equal z, then let t be such that cot(t) = (1-y)/(x-z). If x does not equal -z, then let t be such that tan(t) = (1+y)(x+z). In both cases the point is on Lt. The only cases left are the points (0,1,0) and (0,-1,0). But these points lie on the lines Lt when t=π/2 and t=0 respectively.  In addition, we can check that the lines in this ruling do not intersect. Suppose (x,y,z) lies on Lt and Ls and t does not equal s. Then $(1-y)\tan t = (1-y)\tan s, \ \ \text{and} \ \ (1+y)\cot t = (1+y)\cot s.$ Assuming the tan and cot functions are not zero or undefined gives both y=1 and y=-1, a contradiction. The case where t=0 and s=π/2 give disjoint lines too: $L_0(t) = (t,-1,t) \ \ \text{and} \ \ L_{\pi/2}(s)=(-s,1,s).$

What is the other ruling? For every t, we can show the straight line Ms given by $(x-z)\cos s=(1+y)\sin s, \ \ \ (x+z)\sin s = (1-y)\cos s$ lies on the surface. The computations are almost identical, so we omit them. Each point of the surface lies on a line in Ms and the lines in this ruling do not intersect.

The second set of rulings on a hyperboloid of one sheet.

Another computation shows that if t+s is not a multiple of π, then Lt and Ms intersect in the point $\left( \frac{\cos(t-s)}{\sin(t+s)}, \frac{\sin(t-s)}{\sin(t+s)}, \frac{\cos(t+s)}{\sin(t+s)} \right).$  For each t in [0,π), there is one s in [0,π) such that t+s is a multiple of π, and the lines Lt and Ms do not intersect. Intuitively, the two lines are on opposite sides of the hyperboloid of one sheet.

There are many other interesting observations to be made about these surfaces. For example, any set of three skew lines generates such a surface and the three skew lines lie in one of the rulings. Ian Agol posted a nice proof of this in the same 2012 Math Overflow post.

# Hyperboloidal Representation of Torus Knots

Written by Timi Patterson (2024 Summer Research Scholar), added to by Elizabeth Denne.

A T(3,5) torus knot arranged on two hyperboloids of one sheet.

In his book Knots and Links, Peter Cromwell details a representation of torus knots embedded in a parameterization on the union of two hyperboloids. He provides these instructions in Section 1.5:

Choose an angle θ in [0, π/2] and construct two points: $A=(\cos\theta, -\sin\theta, -1), \ \ B=(\cos\theta, \sin\theta, 1).$ The straight line through A and B is defined by $x=\cos\theta, y=z\sin\theta.$ Rotating this line about the z-axis gives the hyperboloid $x^2+y^2-z^2\sin^2\theta = \cos^2\theta.$ Let Ht denote the annulus obtained by restricting z between the interval from -1 to 1. The boundary curves of the annulus are unit circles: $x^2+y^2=1, \ \ z=\pm 1.$ Take the union of two of these Ht annuli with different values of t=theta. This new surface is topologically a torus.

The (p,q) torus knot with p strictly greater than q (and q greater than or equal 2) can be embedded in one of these “hyperboloidal” tori as follows. Choose t=theta and s=phi such that $\frac{q}{p}\cdot \frac{\pi}{2} <\theta < \min\{ \frac{\pi}{2}, \frac{q}{p} \pi\} \ \ \ \text{and} \ \ \ \phi = \frac{q}{p}\pi -\theta .$  The knot will lie in the torus which is the union of Ht and Hs.

Now take i in {0, 1, 2, … , 2p}. If i is odd, the vertices of the knot are $v_i=( \cos((i-1)\pi\frac{q}{p} + 2\theta), \sin((i-1)\pi\frac{q}{p}+2\theta), 1),$ and if i is even, the vertices of the knot are $v_i = (\cos((i\pi\frac{q}{p}), \sin(i\pi\frac{q}{p}), -1) .$

Polygonal (3,2) torus knot whose edges lie on hyperboloids of one sheet.

Following these instructions for the trefoil knot viewed as a T(3,2) torus knot, with$\theta = \frac{2\pi}{5} \ \ \text{and} \ \ \phi = \frac{4\pi}{15},$

I constructed the following vertices:
 x y z 1 -0.8090169944 0.5877852523 1.0 2 -0.5 -0.8660254038 -1.0 3 0.9135454576 0.4067366431 1.0 4 -0.5 0.8660254038 -1.0 5 -0.1045284633 -0.9945218954 1.0 6 1.0 0.0 -1.0

One component of the T(4,2) torus link.

I first constructed the T(5,3) torus knot in Cinema 4D, as the vertices were detailed in the book. I did this by creating splines using the vertices created by the functions, and using Cinema 4D’s sweep function to create a model with a thickness. I used the Chamfer tool to smooth out the corners. I then went on to create the trefoil knot, the T(10,8) torus knot, the T(4,2), T(12,3), and T(10,8) torus links all in Cinema 4D with the same technique.

The T(4,2) torus link. Note the two components differ by a 90 degree rotation.

To create the links, I had to separate the functions into the different components. Take for example the T(4,2) torus link. When evaluating the formulas, the q/p reduces to 1/2. To then create the two different components of T(2,1), the first component uses the vertices constructed as described above. To construct the vertices of the second component, simply add π/2 to the inside of the trig function in each component. (For example cos(iπ/2 +π/2) for the first term in the even index vertex.) Therefore, I had two components with these vertices (for theta=3π/8 and phi=π/8).

Component 1:

 x y z 1 -0.7071067812 0.7071067812 1.0 2 -1.0 0.0 -1.0 3 0.7071067812 -0.7071067812 1.0 4 1.0 0.0 -1.0

Component 2:

 x y z 1 0.7071067812 0.7071067812 1.0 2 0.0 -1.0 -1.0 3 -0.7071067812 -0.7071067812 1.0 4 0.0 1.0 -1.0

One version of the T(10,8) torus link.

A different version of the T(10,8) torus link.

One thing that I experimented with some when working with the T(10,8) torus link is manipulating the theta value to try and reduce any intersections of the model. I created two different models, one with theta=5π/11, the other with theta=5π/12. They varied a lot with where the self-intersections of the tubes were, but alas both of the tubes did self intersect. That will most likely happen with a lot of torus knots or links with p’s and q’s of closer value, but some self-intersections may be able to be avoided by manipulating the theta value,

The T(10,3) torus knot.

I then went on to print out most of these 3D models. The T(10,3) torus knot and T(10,8) torus link are shown above. It turned turns out that these models are surprisingly difficult to print. Take a look at the models. There is only a small area on the base of each V shape. The edges of the knots have to “grow” from this small base. This means the models are unstable. So even though the angle of the edges is high with respect to the ground, the models still need support. We printed several without supports and had some spectacular failures, as shown below. After the edges of the knots fell over on the print bed, the printer kept going leaving a squiggly mess of filament.  The solution to this problem was to increase the angle for the supports from 43 to 55 degrees.

Several of the builds failed as the edges of the knots fell over during 3D printing.

In July it was time to get back to designing and 3D printing some more math models. I had previously seen some beautiful models printed by Dave Pfaff on the Series 1 Pro, using its ability to print in a spiral. I wanted to print a large hyperboloid of one sheet using this printing technique.

So I went back to Cinema4D to design the model. I used the Function tool to make the hyperbola $$\frac{x^2}{4} -\frac{y^2}{9}=1$$, which has asymptotes $$y=\pm \frac{3x}{2}$$. I then used the Lathe tool to revolve the hyperbola around the $$y$$-axis and create a hyperboloid of one sheet. I knew, from the asymptotes, that the surface would have an angle  greater than $$45^\circ$$ angle with the $$xz$$-plane. (Recall that in Cinema 4D, the $$y$$-axis points upwards where the $$z$$-axis usually points in mathematics.) Having a steep angle with the plane is important feature when 3D printing in a spiral. Since there won’t be any supports printed, a steep angle increases the chances of a good print.

At this point I used the surface I had created to make two different kinds of models. For the first model, I simply added a top and bottom to create a closed volume.  For the second model, I thickened the surface using the Extrude tool (2mm), again creating a closed volume. The extruded surface had raised top and bottom rims, which meant the model would not sit flat. So I selected all the point around the top (respectively bottom) rim and brought them down (resp. up) an appropriate distance. Apart from this, this thickened model needed very little doing to it. I then created a third model by adding equations and removing them from the thickened surface. This ended up being quite involved as I used the Bend Tool to make sure the equations sat nicely on the surface.

In order to get a spiral print, I took the first closed model, and adjusted the print settings on the Series 1 Pro printer. The top and bottom layers of the model are not printed; instead the nozzle goes around in a spiral, printing the surface 1 layer thick. Initially, we had trouble with both the fan and print speed settings. This meant the filament was not setting at the bottom of the model, leaving a gaps and giving a ragged appearance. After we slowed the print speed down and made sure the fan turned on after 1mm (rather than after 10mm), the prints turned out beautifully. The small model is about 13cm tall, and the large one about 20cm tall. These models can be found on Thingiverse here.

The next set of models was the hyperbolic paraboloid again, but this time I wanted to surface to look more like a saddle shape. To achieve this I went into Mathematica and use ParametricPlot3D command to plot the surface $$z=x^2-y^2$$. Instead of displaying it inside a box, I had Mathematica just show the part of the surface inside the circle $$x^2+y^2=1$$. To do this, I used the RegionFunction command.

I exported the Mathematica file as a .wrl to Cinema4D. Once there, I extruded the surface (again 2mm thick), then had to spend a significant amount of time repairing the mesh. To do this, I used the Optimize function, and also went around the surface repairing the mesh by hand (removing points, lines and faces, then using the Fill Polygon Hole tool to repair the gaps). I made two copies of the model, one with equations and one without. (I also built the equations in Cinema4D and extruded them. I then removed them from the surface using the Boole tool.) I 3D printed the resulting models on the FormLabs Form 1+ printer in clear and grey resin. The surfaces printed very well, though there were a fair number of supports to remove.

These models can be found on Thingiverse here.

# Quadratic Surfaces – Hyperboloid of One Sheet

My first successful print of a quadratic surface was a hyperboloid of one sheet.

I began this project by creating a solid hyperboloid of one sheete in Mathematica. I didn’t like this object since it was a complete solid and not the surface I was trying to create.

To make the surface I originally attempted to import a Mathematica file of the surface into Cinema 4D and then give it thickness. This quickly became a nightmare to deal with. I had to be extremely careful about how many plot points I used in Mathematica because too many created too many polygons. These polygons also overlapped and so when I tried to extrude them to give the surface thickness the normals were off and it resulted in a very jagged surface. After spending hours trying to work with my Mathematica file I decided to try to create the surface from scratch in Cinema 4D.

In order to do this I used a ‘formula spline’. In Cinema 4D ‘formula splines’ are created using parametric equations. I used the equations $$x(t)=sinh(t), y(t)=cosh(t), z(t)=0$$. I then rotated this spline 360 degrees using the Lathe tool. I then optimized the polygons in order to fully connect the object where the spline’s rotation began and end. Once this was done I was able to extrude the polygons to give the surface thickness using the polygon extrude and being sure to add caps to my extrusion.

One this was done I had my object complete. The next step was to add equations. Using the instructions for how to put equations on solids I created my equations. In order to put them on the solid I used the bend tool in Cinema 4D. Using this tool was very difficult and took a lot of playing with to make it look good. The first thing I had to do was fit the bend box and rotate it in order to bend my equation correctly. When I went to bend the formula to fit my object, I found I needed to align only the first part of the equation on the left hand side with the surface (and not the center of the formula) since the bend tool bent the equation from the left and not at the center.

The first time I printed my object I realized the equations I had put on my object were far too small. I went back to my Cinema 4D file and make them bigger to get my final object! This object can be found on Thingiverse here.