STL file for Fourier-(1,1,2): http://www.geekhaus.com/makerhome/day151_trefoil_fourier112_40_25_3.stl
STL file for tritangentless: http://www.geekhaus.com/makerhome/day151_trefoil_tritangentless_40_25_3.stl
Thingiverse link: http://www.thingiverse.com/thing:234107
Settings: MakerWare .3mm/low in 20-25 minutes per knot, with the minimum-support custom slicing profile for knots described on Day 110.
Technical notes, math flavor: A Fourier-(1,1,2) knot is one that can be parametrized as
x = a cos(nt + p)These equations are from the paper Torus knots are Fourier-(1,1,2) Knots by Jim Hoste at Pitzer College. Here a, b, c, d, p, q, r, and s can be any real numbers, and n, m, j, and k are integers. If d=0 then the parametrization is said to be a Fourier-(1,1,1) knot, which is also known as a Lissajous knot. It is known that torus knots do not have Lissajous parametrizations (for more information see this page from Lee Stemkoski at Adelphi University).
y = b cos(mt + q)
z = c cos(jt + r) + d cos(kt + s)
The tritangentless conformation is a variant of the parametrization of the trefoil that appears in the paper Trefoil knots without tritangent planes by H.R. Morton at the University of Liverpool. For more information see Day 110, and for the explicit equations see the OpenSCAD code below.
Technical notes, OpenSCAD flavor: The code below was based on kitwallace's code from his Rolling Knot on Thingiverse. It's slow to render with F6, taking nearly a half an hour to get a model with step size 3 (which is 120 steps). The code is written so that you can size your knot before setting the strand thickness, which allows us to scale up models without affecting the thickness of the strand.
// mathgrrl parametric knots - fourier and tritangentless trefoils
// tubify module based on tube module from kitwallace
// remove comments for the one you want to compile
/*
// 3_1 tritangentless conformation
// http://blms.oxfordjournals.org/content/23/1/78.full.pdf
a = 0.8;
b = sqrt (1 - a * a);
function f(t) =
[ 8.7 * a * cos (3 * t) / (1 - b* sin (2 *t)),
8.7 * a * sin( 3 * t) / (1 - b* sin (2 *t)),
8.7 * 1.8 * b * cos (2 * t) /(1 - b* sin (2 *t))
];
// create the knot with given radius and step
tubify(2.5, 3, 360);
*/
/*
// trefoil 32 as Fourier-(1,1,2)
// http://arxiv.org/pdf/0708.3590v1.pdf
// note torus knots are not Lissajous (1,1,1)
// scaled to 40mm before tubifying
function f(t) =
[ 9*1.3*cos(3*t),
9*1.5*cos(2*t + 30),
9*(1.3*cos(3*t + 90) + .9*cos(-t + 30*2 - 45/2))
];
// create the knot with given radius and step
tubify(2.5, 3, 360);
*/
module tubify(r, step, end) {
for (t=[0: step: end+step]) {
hull() {
translate(f(t)) sphere(r);
translate(f(t+step)) sphere(r);
}
}
};
nop head has developed an approach to tube construction using the experimental concat feature available in the latest openscad snapshot . It constructs the tube as a single polyhedron. I've applied it to these two knots and code is in github
ReplyDeletehttps://github.com/KitWallace/openscad/blob/master/knot_151.scad
It renders the second knot with a step of 0.5, $n=20 in .... wait for it.... 30 seconds! genius!
WOW! I can't wait to see that, I will take a look today and try it out.
Delete