Today’s knot is 5_2, the three-twist knot, in a Lissajous conformation. The cool thing about this model is that from each side, the knot looks like a wavy cosine function:

Thingiverse link: http://www.thingiverse.com/make:80103

Settings: MakerBot Replicator 2 with our custom knot-slicing profile.

Technical notes, math flavor: Lissajous knots are knots that can be parametrized by a triple of simple cosine functions, and are a subclass of Fourier knots. Although every knot can be expressed as a Fourier-(1,1,k) knot, not every knot is a Lissajous knot, that is, a Fourier-(1,1,1) knot. In this notation the (1,1,k) denotes how many cosine terms the parametrization has in each coordinate; for example, a Lissajous knot is (1,1,1) so has just one cosine function in each coordinate, but our trefoil from Day 151 is Fourier-(1,1,2) because its z-coordinate parametrization is a sum of two cosine functions. Today’s 5_2 knot is the first knot in the standard table that can be expressed as a Lissajous knot, with just one cosine function in each coordinate.

Technical notes, OpenSCAD flavor: This knot was designed and printed by JMU student Patrick Moran. We used the slow but effective OpenSCAD “tubify” code from Day 151, and the parameters and phase shift values for 5_2 from the Wikipedia entry on Lissajous knots. However, this parametrization is built for knots with zero thickness, which of course would not print very well. With the thickness we needed for printing, the Wikipedia parametrization is self-intersecting:

In the code above, the factors of 180/3.14159 convert the phase shifts into degrees, since OpenSCAD does not use radians. The scaling factor of 30 in each coordinate allows a large enough knot parametrization to accommodate our radius of r=1.5. To fix the self-intersection of the original parametrization, Patrick re-scaled each coordinate individually as follows:

hum. your scad file didnt do anything… function f(t) = [

30.5*cos(3*t+0.7*180/3.14159),

38.5*cos(2*t+0.2*180/3.1415927),

32.5*.5*cos(7*t)

];

tubify(3.7,1.5,360);

module tubify(r,step,end){

for (t=[o:step:end]){

hull(){

translate(f(t)) sphere(r);

translate(f(t+step)) sphere(r);

}

}

};