LiveGraphics3D Example:
The Borromean Rings

Two Visualizations of the Borromean Rings
 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. This special curve was taken from another nice web page about the Borromean rings. The implementation within Mathematica is shown below.

Implementation

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[],
FaceForm[SurfaceColor[RGBColor[1, 1, 0.]],
SurfaceColor[RGBColor[1, 1, 0.]]],
RotateShape[ring, Pi/2, Pi/2 , 0][],
FaceForm[SurfaceColor[RGBColor[0., 0., 1]],
SurfaceColor[RGBColor[0., 0., 1]]],
RotateShape[ring,0 , Pi/2, Pi/2][]},
LightSources->{{{-1, 1, 1},GrayLevel},
{{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;

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}, GrayLevel[0.7]}},
AmbientLight->GrayLevel[0.4]]];
```

The procedure to dispaly the Graphics3D objects with LiveGraphics3D is explained in the documentation.

Martin Kraus, March 24, 1998