“Everything that matters in life flows through tubes.” - Georg Christoph Lichtenberg, The Waste Books
Model of a Boy surface at the Mathematical Research Institute of Oberwolfach, Germany
1. Preceding questions
This is (hopefully) the last of three questions concerning display options of ParametricPlot3D. The first two are
A perforated ding dong surface
and
2. Parametrization
x = 1/2 * ((2 * a^2 - b^2 - c^2) + 2 * b * c * (b^2 - c^2) + c * a * (a^2 - c^2) + a * b * (b^2 - a^2));
y = 7/8 * ((b^2 - c^2) + c * a * (c^2 - a^2) + a * b * (b^2 - a^2));
z = -1/8 * (a + b + c) * ((a + b + c)^3 + 4 * (b - a) * (c - b) * (a - c));
boy = {x, y, z} /. {a :> Sin[u] * Sin[v], b :> Cos[u] * Sin[v], c :> Cos[v]};
3. ParametricPlot3D
The appearance of a Boy surface changes significantly with different viewpoints.
Table[
ParametricPlot3D[boy, {u, 0, Pi}, {v, 0, Pi},
Axes -> False,
Boxed -> False,
Lighting -> "ThreePoint",
PlotPoints -> 40,
PlotStyle -> MaterialShading["Iron"],
ViewPoint -> v],
{v, {Top, Below, {1.3, -2.4, 2}}}] // GraphicsRow
4. Tubification
To look inside and through the surface I tried:
ParametricPlot3D[boy, {u, 0, Pi}, {v, 0, Pi},
Axes -> False,
Mesh -> 12,
PlotPoints -> 80,
PlotStyle -> None,
ViewPoint -> Above] /. Line :> ({Darker @ Red, Tube[#, 0.02]} &)
And to see the first two "generating" curves:
ParametricPlot3D[boy, {u, 0, Pi}, {v, 0, Pi},
Axes -> False,
Mesh -> 1,
PlotPoints -> 40,
PlotStyle -> None,
ViewPoint -> Top] /. Line :> ({Darker @ Red, Tube[#, 0.02]} &)
5. Questions (sorted by relevance)
With my very basic appended tubification method I cannot colorize the tubes, nor can I apply a material to them.
The first tube plot has a very flat appearance. Maybe an appropriate lighting or another view angle would give a nicer result.
I would like to have an option to change the tube profile from round to rectangular.
Thank you in advance for your help and suggestions.















ParametricPlot3D[boy, {u, 0, Pi}, {v, 0, Pi}, Axes -> False, PlotPoints -> 100, Mesh -> 1, PlotStyle -> None, ViewPoint -> Above, MeshStyle -> {{MaterialShading[{"Glazed", Red}], Tube[0.07]}}]? – kglr Oct 06 '23 at 11:43