# How can I create a minimal surface with trefoil knot as inner edge and circle as outer edge?

This minimal surface is the subject of Michael Foster's beautiful wood-turned sculpture "Inversion" (see http://breezyhillturning.com/styled-2/photos-2/index.html).

In addition, how can one create 2D projections of this minimal surface?

• Topologically, this is the Seifert surface of the union of a trefoil knot and an unknot (a circle). Seifert gave an algorithm for obtaining such a surface, but converting it to Mathematica code is another matter. As is making it a minimal surface... – Rahul Dec 16 '14 at 10:53
• Although for the latter, "Visualizing Minimal Surfaces" from The Mathematica Journal seems relevant. – Rahul Dec 16 '14 at 11:00

Let's start with a very coarse triangle mesh that is spanned into coarse approximations of both a round circle and a trefoil knot:

R0 = MeshRegion[
{{0.7500273036793702, 3.76147758203428*^-17, 2.906278119369538*^-17}, {0.8705378492638793, 0.07751720292285104, 0.0008837176573538955}, {0.7713524614216626, 0.33636054838561097, 0.006228199166873891}, {0.6573509103985639, 0.3070512205130426, 0.028588437239951532}, {0.6610310804045564, -0.2984155385454792, -0.029655789809020023}, {0.8330929515604932,  -0.2283642507965738, -0.002046402312729532}, {0.6791661090527485, 0.002270249212695186, -0.0002805981436901225},  {0.7277435204772187, -0.4206035972270632, -0.00833424354619048}, {-0.3750136518396851, 0.6495426985182803, -2.3629795066625606*^-17},  {-0.502400791593442, 0.7151492909569623, 0.0008837176573538783}, {-0.6769730104436353, 0.4998305526700104, 0.006228199166873873}, {-0.5945896124265945, 0.41575697734946326, 0.028588437239951497}, {-0.07208010293787873, 0.7216774775941591, -0.029655789809020165},  {-0.218777233274213, 0.8356617851634327, -0.0020464023127295563},  {-0.3415491480174897, 0.5870399792227651, -0.00028059814369024353},  {0.0003816398831454383, 0.8405461747863238, -0.008334243546190527},  {-0.3750136518396851, -0.6495426985182804, 3.9668187899865235*^-18}, {-0.3681370576704374,  -0.7926664938798135, 0.0008837176573538869}, {-0.0943794509780274,  -0.8361911010556216, 0.0062281991668738795}, {-0.06276129797196948, -0.7228081978625059, 0.028588437239951504}, {-0.5889509774666775, -0.4232619390486799, -0.02965578980902008}, {-0.6143157182862803, -0.6072975343668591, -0.002046402312729543}, {-0.33761696103525873, -0.5893102284354601, -0.00028059814369018016}, {-0.7281251603603641, -0.4199425775592605, -0.008334243546190499}, {-0.0000573538651297449, -0.0021211046948096464, 0.010235243567421528}, {-0.11515098290606908, -0.10323214348312777, 0.03651746930822393}, {0.08003195228032729, -0.1389576306413695, 0.0015590551459508308}, {0.14919313946910776, 0.04539711796317642, -0.041715744314098344}, {-0.03469928049253633, 0.15563767609535087, 0.03148964601765504}, {0.25000000000000006, 0.4330127018922193, 0.25}, {0.25, 0.4330127018922197, -0.25}, {0.2500000000000001, -0.4330127018922194, 0.25}, {0.24999999999999925, -0.433012701892219, -0.25}, {-0.5000000000000001, 1.8369701987210302*^-16, 0.25}, {-0.49999999999999994, 6.123233995736765*^-17, -0.25}, {0.7071067811865474, -0.7071067811865477, 0.}, {0.8660254037844384, -0.5000000000000004, 0.}, {0.9659258262890683, -0.2588190451025207, 0.}, {1., 0., 0.}, {0.9659258262890683, 0.25881904510252074, 0.}, {0.8660254037844387, 0.49999999999999994, 0.}, {0.7071067811865476, 0.7071067811865475, 0.}, {0.75, 0., 0.}, {0.25881904510252074, 0.9659258262890683, 0.}, {6.123233995736766*^-17, 1., 0.}, {-0.25881904510252085, 0.9659258262890683, 0.}, {-0.4999999999999998, 0.8660254037844387, 0.}, {-0.7071067811865475, 0.7071067811865476, 0.}, {-0.8660254037844387, 0.49999999999999994, 0.}, {-0.9659258262890682, 0.258819045102521, 0.}, {-0.37499999999999944, 0.6495190528383293, -1.2246467991473532*^-16}, {-0.9659258262890684, -0.25881904510252035, 0.}, {-0.8660254037844386, -0.5000000000000001, 0.}, {-0.7071067811865477, -0.7071067811865475, 0.}, {-0.5000000000000004, -0.8660254037844384, 0.}, {-0.25881904510252063, -0.9659258262890683, 0.}, {-1.8369701987210297*^-16, -1., 0.}, {0.2588190451025203, -0.9659258262890684, 0.}, {-0.37500000000000033, -0.6495190528383288, -6.123233995736766*^-17}, {-0.12499999999999994, 0.21650635094610968, 3.061616997868383*^-17}, {-0.12499999999999996, -0.21650635094610968, 1.5308084989341916*^-16}, {0.25, 0.3383883476483184, 0.17677669529663687}, {1.9791719275740164*^-17, 0.32322330470336313, 0.1767766952966369}, {0.2799195929682706, 0.16161165235168123, -0.17677669529663664},  {2.0720310340813742*^-16, 0.6767766952966366, -0.17677669529663712}, {-1.243218620448825*^-16, -0.676776695296637, 0.17677669529663684}, {0.2799195929682708, -0.16161165235168182, 0.1767766952966371}, {-1.3854203493018116*^-16, -0.32322330470336313, -0.17677669529663692}, {0.5861058108161683, -0.33838834764831854, -0.17677669529663653}, {-0.586105810816168, 0.3383883476483182, 0.17677669529663695}, {-0.27991959296827107, -0.1616116523516814, 0.17677669529663714}, {-0.2799195929682707, 0.1616116523516815, -0.17677669529663687}, {-0.586105810816168, -0.33838834764831854, -0.17677669529663675}, {0.5000000000000001, 0.8660254037844387, 0.}, {0.5000000000000001, -0.8660254037844387, 0.}, {-1., 1.2246467991473532*^-16, 0.}},
Triangle[{{30, 64, 65}, {30, 65, 31}, {63, 66, 75}, {30, 31, 66}, {30, 66, 63}, {32, 68, 69}, {32, 69, 33}, {67, 70, 76}, {32, 33, 70}, {32, 70, 67}, {34, 72, 73}, {34, 73, 35}, {71, 74, 77}, {34, 35, 74}, {34, 74, 71}, {4, 3, 75}, {8, 1, 5}, {7, 1, 4}, {40, 2, 39}, {3, 2, 40}, {42, 3, 41}, {76, 5, 70}, {63, 4, 75}, {70, 5, 7}, {38, 6, 37}, {6, 8, 37}, {3, 4, 1}, {7, 63, 43}, {6, 38, 2}, {39, 2, 38}, {1, 8, 6}, {75, 3, 42}, {2, 1, 6}, {2, 3, 1}, {4, 63, 7}, {8, 76, 36}, {3, 40, 41}, {70, 7, 43}, {1, 7, 5}, {76, 8, 5}, {37, 8, 36}, {12, 11, 77}, {16, 9, 13}, {15, 9, 12}, {48, 10, 47}, {11, 10, 48}, {50, 11, 49}, {75, 13, 66}, {71, 12, 77}, {66, 13, 15}, {46, 14, 45}, {14, 16, 45}, {11, 12, 9}, {15, 71, 51}, {14, 46, 10}, {47, 10, 46}, {9, 16, 14}, {77, 11, 50}, {10, 9, 14}, {10, 11, 9}, {12, 71, 15}, {16, 75, 44}, {11, 48, 49}, {66, 15, 51}, {9, 15, 13}, {75, 16, 13}, {45, 16, 44}, {20, 19, 76}, {24, 17, 21}, {23, 17, 20}, {56, 18, 55}, {19, 18, 56}, {58, 19, 57}, {77, 21, 74}, {67, 20, 76}, {74, 21, 23}, {54, 22, 53}, {22, 24, 53}, {19, 20, 17}, {23, 67, 59}, {22, 54, 18}, {55, 18, 54}, {17, 24, 22}, {76, 19, 58}, {18, 17, 22}, {18, 19, 17}, {20, 67, 23}, {24, 77, 52}, {19, 56, 57}, {74, 23, 59}, {17, 23, 21}, {77, 24, 21}, {53, 24, 52}, {68, 27, 69}, {73, 29, 60}, {25, 29, 73}, {61, 27, 26}, {26, 72, 61}, {62, 28, 27}, {29, 28, 65}, {29, 65, 64}, {72, 26, 73}, {29, 64, 60}, {62, 27, 68}, {73, 26, 25}, {26, 27, 25}, {62, 65, 28}, {27, 28, 25}, {27, 61, 69}, {28, 29, 25}}]
]


Building this from

γ = t \[Function] Evaluate[1/4 KnotData[{"TorusKnot", {2, 3}}, "SpaceCurve"][t]];
δ = t \[Function] {Cos[t], Sin[t], 0};


involved already quite a lot of handcraft (solving several Possion problems and glueing pieces together).

Next, we refine this mesh utilizing the function LoopSubdivide from this post:

 R = Nest[LoopSubdivide, R0, 5]


Finally, we apply areaGradientDescent from this post:

areaGradientDescent[R]


Initial area = 2.92354

Final area = 2.7772

This is a view from the top: