Nines
In our paper "New stick number bounds from random sampling of confined polygons", my graduate student Thomas D. Eddy and I found many examples of polygonal knots made with fewer edges than previously observed. Among these, we found 9-edge examples of the knots $9_{35}$, $9_{39}$, $9_{43}$, $9_{45}$, and $9_{48}$. Since these knots were already previously known to require at least 9 edges, this proved that the stick number (minimum number of edges needed) for these knots is exactly 9.
In addition to the results in the paper, we provide both source code and data on Github; among the data are the current best bounds on stick number for all knots up to 10 crossings and coordinates of vertices achieving these bounds.
The animation shows each of the five knots $9_{35}$, $9_{39}$, $9_{43}$, $9_{45}$, and $9_{48}$ in the minimal configuration we discovered.
To make the animation, first extract coordinates from Github:
knotcoords =
Import["https://raw.githubusercontent.com/thomaseddy/stick-knot-gen/\
master/data/mseq_knots/" <> # <> ".txt", "Data"] & /@
{"9_35", "9_39", "9_43", "9_45", "9_48"};
Next, some functions for mean-centering and offsetting a collection of points:
MeanCenter[p_] := Table[p[[i]] - Mean[p], {i, 1, Length[p]}];
HorizontalOffset[p_, v_] := Table[p[[i]] + v, {i, 1, Length[p]}];
And some specific offsets for making this particular animation, found mostly by trial and error:
offsets = 1.4 {{-1, 1/2, 0}, {0, 1/2, 0}, {1, 1/2, 0}, {-1/2, -1/2, 0}, {1/2, -1/2, 0}};
And then here's a Manipulate
for the animation (see this comment for the process of exporting to GIF):
DynamicModule[{p,
cols = RGBColor /@ {"#D9782D", "#12A4B6", "#ECC530", "#CC5430",
"#C9D845", "#105456"}},
Manipulate[
Show[
Table[
p = HorizontalOffset[
MeanCenter[
knotcoords[[i]].RotationMatrix[-θ, {0, 1, 0}]], offsets[[i]]];
Graphics3D[{cols[[i]], Tube[Append[#, #[[1]]], .015] &[p],
Sphere[#, .025] & /@ p},
Boxed -> False, SphericalRegion -> True, PlotRange -> 2,
ViewAngle -> π/8, ViewPoint -> Top],
{i, 1, 5}],
ImageSize -> {540, 400}, Background -> cols[[-1]], Lighting -> "Neutral"],
{θ, 0, 2 π}]
]
If you want to know more, but don't want to read our whole paper, check out these slides for a talk that was cancelled due to COVID–19 concerns after I had already written the slides.