The Borromean rings can be constructed in many ways, the common feature however is the following: Remove one of the three connected rings and the remaining two will fall apart. Actually the Borromean rings cannot be constructed with flat circles, but for example with triangles, squares or ellipses as shown here. |
Using "distorted" circles is another possibility to construct the Borromean rings as shown above. The implementation within Mathematica is shown below. |
The first visualization was created this way within Mathematica:
<<Graphics`Shapes` ring=ParametricPlot3D[{2 Cos[t], Sin[t], z}, {t, 0, 2 Pi}, {z, -0.15, 0.15}, PlotPoints->{30, 2}]; g=Show[Graphics3D[{EdgeForm[], FaceForm[SurfaceColor[RGBColor[1, 0., 0.]], SurfaceColor[RGBColor[1, 0., 0.]]], ring[[1]], FaceForm[SurfaceColor[RGBColor[1, 1, 0.]], SurfaceColor[RGBColor[1, 1, 0.]]], RotateShape[ring, Pi/2, Pi/2 , 0][[1]], FaceForm[SurfaceColor[RGBColor[0., 0., 1]], SurfaceColor[RGBColor[0., 0., 1]]], RotateShape[ring,0 , Pi/2, Pi/2][[1]]}, LightSources->{{{-1, 1, 1},GrayLevel[1]}, {{1, -1, -1},GrayLevel[0.7]}}, AmbientLight->GrayLevel[0.4],Boxed->False, ViewPoint->{2.49462, 2.43079, -2.59387}, ViewVertical->{-0.36058, 0.82809, 0.429243}]];
And the command
NumberForm[InputForm[g], 5]
to generate an InputForm which was pasted into this HTML page.
The second construction was done with this piece of code:
r=Sqrt[3]/3; g1=ParametricPlot3D[ Evaluate[{z {Cos[t], Sin[t],0} + {0, r, -Cos[3 t]/3}, z {Cos[t], Sin[t], 0} + {1/2, -r/2, -Cos[3 t]/3}, z {Cos[t], Sin[t], 0} + {-1/2, -r/2, -Cos[3 t]/3}}], {t, 0, 2 Pi}, {z, 0.85, 1.15}, PlotPoints->{30, 2}]; g=Show[Graphics3D[{EdgeForm[], FaceForm[SurfaceColor[RGBColor[0, 0, 1]], SurfaceColor[RGBColor[0, 0, 1]]], g1[[1, 1]], FaceForm[SurfaceColor[RGBColor[1,1,0]], SurfaceColor[RGBColor[1, 1, 0]]], g1[[1, 2]], FaceForm[SurfaceColor[RGBColor[1,0,0]], SurfaceColor[RGBColor[1, 0, 0]]], g1[[1, 3]]}, Boxed->False, ViewPoint->{0, 0, 4}, ViewVertical->{0, 1, 0}, LightSources->{{{1, 1, 1}, GrayLevel[1]}, {{-1, -1, -1}, GrayLevel[0.7]}}, AmbientLight->GrayLevel[0.4]]];
The procedure to display the Graphics3D objects with LiveGraphics3D is explained in the documentation.