﻿ Euler Math Toolbox - Examples

# Trefoil Knot

by R. Grothmann

based on a notebook by A. Busser

Trefoil knot in almost tubeplot style (the radius is not quite uniform).

```>u:=linspace(-pi,pi,160); v:=linspace(-pi,pi,400)'; ...
x:=(4*(1+.25*sin(3*v))+cos(u))*cos(2*v); ...
y:=(4*(1+.25*sin(3*v))+cos(u))*sin(2*v); z=sin(u)+2*cos(3*v); ...
plot3d(x,y,z,frame=0,scale=1.5,hue=1,light=[1,0,-1],zoom=3.2):
``` A 3D anaglyph view of this knot.

```>plot3d(x,y,z,frame=0,scale=1.5,hue=1,light=[1,0,-1],anaglyph=1,zoom=3.2):
``` Use red/cyan glasses to view this.

Change the '3's by '5's and you have a 5_1 knot. Surely any torus knot can be obtained this way...

```>x:=(4*(1+.4*sin(5*v))+cos(u))*cos(2*v); ...
y:=(4*(1+.4*sin(5*v))+cos(u))*sin(2*v); z=sin(u)+2*cos(5*v); ...
plot3d(x,y,z,frame=0,scale=1.5,hue=1,light=[1,0,-1], ...
zoom=3,anaglyph=1):
``` # Explanation

I try to explain this, and improve the look by making the tube more consistent in radius.

First the curve is a based on the curve with the following coordinates.

```>function fx (t) &= 4*(1+sin(3*t)/3)*sin(2*t)
```
```                                  sin(3 t)
4 sin(2 t) (-------- + 1)
3

```
```>function fy (t) &= 4*(1+sin(3*t)/3)*cos(2*t)
```
```                                  sin(3 t)
4 cos(2 t) (-------- + 1)
3

```

These curves run twice around the unit circle with a periodic alternation in the radius.

```>t=linspace(-pi,pi,400); ...
plot2d(fx(t),fy(t),r=5):
``` If we add height to this curve, we get a curve forming a 3D knot.

```>function fz(t) &= 2*cos(3*t)
```
```                              2 cos(3 t)

```

Rotate the figure with the cursor keys to get an impression of the knot. Or press a to generate an anaglyph, if you have red/cyan glasses.

```>plot3d(fx(t),fy(t),fz(t),wire=1,>user,zoom=4,<frame, ...
title=" Press cursor keys, a, space, or return."):
``` ```>function f(t) &= [fx(t),fy(t),fz(t)]
```
```                    sin(3 t)                   sin(3 t)
[4 sin(2 t) (-------- + 1), 4 cos(2 t) (-------- + 1),
3                          3
2 cos(3 t)]

```

Next we add a tube to the curve.

Instead of a simple rotation of a circle around the x-axis, we compute the derivative vector of the curve.

```>function df(t) &= diff(f(t),t)
```
```                    sin(3 t)
[8 cos(2 t) (-------- + 1) + 4 sin(2 t) cos(3 t),
3
sin(3 t)
4 cos(2 t) cos(3 t) - 8 sin(2 t) (-------- + 1), - 6 sin(3 t)]
3

```
```>function w1(t) &= [df(t),-df(t),0]
```
```                                          sin(3 t)
[4 cos(2 t) cos(3 t) - 8 sin(2 t) (-------- + 1),
3
sin(3 t)
- 8 cos(2 t) (-------- + 1) - 4 sin(2 t) cos(3 t), 0]
3

```
```>function w2(t) &= crossproduct(df(t),w1(t));
>function g(s,t,r) &= f(t)+r*(cos(s)*w1(t)/norm(w1(t))+sin(s)*w2(t)/norm(w2(t)));
>function gx(s,t) &= g(s,t,r);
>function gy(s,t) &= g(s,t,r);
>function gz(s,t) &= g(s,t,r);
>s=linspace(pi,-pi,160)';
>r=1;
>fullwindow; plot3d(gx(s,t),gy(s,t),gz(s,t),>hue, ...
<frame,zoom=5,max=0.7,amb=0):
``` # Using Povray

To be able to run this, you need to install Povray and put it into the program path.

```>load povray;
>pov3d(gx(s,t),gy(s,t),gz(s,t),zoom=5,axis=0, ...
look=povlook(gray,>phong));
``` The following scene takes quite a while to write and to parse. Please be patient. On my system, it took about 30 seconds.

```>pov3d(gx(s,t),gy(s,t),gz(s,t),zoom=5,axis=0, ...
look=povlook(gray,),>anaglyph);
``` Let us clean up, since the Povray source code is quite large.

```>povclear();
```

Examples