Welcome to MakerHome

We've completed our yearlong print-a-day project!
All new material is now at Hacktastic: www.mathgrrl.com

Saturday, December 14, 2013

Day 110 - Rocking knot

Today's print is a knot with a special property: No matter how the knot sits on the table, it never touches the table in more than two places. This property makes the knot rock back and forth easily, and roll down even very shallow inclines. It's a fun thing to have on your desk, and it's the knot that I usually print at demos and talks.

STL file for thicker knot: http://www.geekhaus.com/makerhome/day110_rockingknot1.stl
STL file for thinner knot: http://www.geekhaus.com/makerhome/day110_rockingknot2.stl
Thingiverse link: http://www.thingiverse.com/thing:205464

Settings: Custom MakerWare profile to control the supports and how they attach to the models; see below for details. The knots in the picture were printed at 50%, 25%, and 15% scale from the STL files above.

Technical notes, math flavor: The thicker model was created in Mathematica using the following code:
a = .8  
b = Sqrt[1 - a^2]
(* a and b have to be numbers with a^2 + b^2 = 1 *) 
     {a*Cos[3 t]/(1 - b*Sin[2 t]),     
      a*Sin[3 t]/(1 - b*Sin[2 t]), 
      1.8*b*Cos[2 t]/(1 - b*Sin[2 t])}, 
     {t, 0, 2 Pi+.01}, 
     PlotStyle -> Tube[0.25, PlotPoints -> 24], 
     PlotRange -> All] 
Export["tritangentless_thick.stl", %]
The parametric equation in this code comes from Morton's paper Trefoil Knots Without Tritangent Planes, Bull. London Math Soc. 23 (1991), 78-80. Changing 0.25 to 0.15 in "Tube" creates the thinner model. The "+.01" at the end of the t-range is to make sure that the knot connects back to itself again when it closes the loop. If you take that part out then you will be able to pull apart the model in that spot, which is useful if you want to put the knot around something but not so useful if you don't want your model to look a little broken.

Technical notes, custom slicing profile flavor: The standard MakerWare profiles work very well for nearly everything I print, but for these knots those profiles leave too much support inside the knots that is difficult to remove.  Here's what I changed from the "PLA standard" profile:
  • "roofThickness": 0.5,   (down from 0.8)
  • "floorThickness": 0.5,   (down from 0.8)
  • "sparseInfillPattern": "linear",  (instead of hexagonal, which shows through badly for these models when using translucent filament)
  • "infillDensity": 0.2,   (up from 0.1, to make sure the knots are sturdy since they curve around a lot)
  • "minSpurLength": 0.4,  (up from 0.34, but can't remember why i did this now – possibly because my knot models have bad mesh/slice problems sometimes and this was fixing the problem)
  • "doSupport": true,
  • "doSupportUnderBridges": true,
  • "supportDensity": 0.1,   (down fro 0.2 – this is the part that helps the most for these models)
  • "supportExtraDistance": 0.8,  (up from 0.5, since parts of the model can swing out far and need some extra support)
  • "supportModelSpacing": 0.5,  (up from 0.4, to make the support further away from the model and thus easier to remove)
Action video! Note that the very slight incline of the closed laptop is enough to make these knots roll.

UDPATE: You can now order a print of this model from Shapeways at the new Geekhaus store.


  1. Inspired by this work, I tried to do this in OpenScad http://www.thingiverse.com/thing:230557 Got reasonable performance in the end but havent yet had it printed.

  2. The openscad code has been much improved with the help of the community and renders more than twice as fast now, and is cleaner - wonderful what a bit of collaboration does.