Constructing an Algebraic Klein Bottle

The author presents a "realistic-looking" parametrization and an implicit formula for the Klein bottle.

by Michael Trott

Not long ago I learned from the late Alfred Gray [1] that no parametrization representing a Klein bottle, which also 'looks like a Klein bottle',  was known.  Further,  no implicit formula for such a Klein bottle was known.  The following article addresses these issues.

A Klein bottle is a single-sided closed surface (a Möbius strip or a cylinder suitably glued together), which cannot be displayed in (ℝ^3) without self-intersections.  A very accessible definition of a Klein bottle is as follows:  Starting with a rectangle, twist the rectangle so that the opposite sides can be glued together. When glued together, one pair of edges should have the same orientation, and one pair the opposite orientation.

The typical parametric form of a Klein bottle is [2, 3]  
\(TraditionalForm
      \`\({\((\(cos(u\/2)\)\ \(sin(t)\) - \(sin(u\/2)\)\ \(sin(2\ t)\) + 2)
              \)\ \(cos(u)\), 
\ \ 
          \((\(cos(u\/2)\)\ \(sin(t)\) - \(sin(u\/2)\)\ \(sin(2\ t)\) + 2)\)\ 
            \(sin(u)\), 
\ \ \ 
          \(sin(u\/2)\)\ \(sin(t)\) + \(cos(u\/2)\)\ \(sin(2\ t)\)}.\)\)
An implicit form of these equations is given in [4].  Here I construct a parametrization of a Klein bottle which looks like a Klein bottle, and then make the representation implicit.  To construct the parametrization I move a sphere along a curve (referred to as a directrix in what follows) while increasing, then decreasing, and then again increasing the diameter of the sphere.

The idea for the construction  of the implicit representation is the following:  I  am looking for a polynomial p(x, y, z) which represents the Klein bottle. Eliminating the parametrization variable in the surface swept out by the above-mentioned moving sphere gives the polynomial p. The directrix should have infinite slope at the begining and the end of the directrix (let this point be the origin).  When the sphere moves along the directrix, it should expand 'infinitely fast' as it leaves, and then later approaches the origin.

I will use rational functions for all parametrizations, which makes the elimination step straightforward.

A Parametric Klein Bottle

I start with the construction of the directrix. Its slope ∂z/∂x should be infinite at the origin.
Further on, let the directrix start and end at the origin and extend into the first quadrant only.
If x(t)  ∝  (t^(-4)) at t -> ±∞ and z(t)  ∝  (t^(-2)) at t -> ±∞, I get the required infinite slope at the origin. Chose x(t) to be (((1 + (t^4)))^(-1)) and z(t) to have the same denominator (1 + (t^4)) (which later, after Together-ing, makes sure that the resulting polynomials have lowest possible degree). One must have a positive-definite quadratic polynomial as the numerator for z(t). As the picture below shows, (t^2) + t + 1 is a possible appropriate choice (I restrict the t-range in the graphics to (-20, 20)).

ParametricPlot[{(1/(1 + (t^4))), (((t^2) + t + 1)/((t^4) + 1))}, {t, 
        -20, 20}, PlotRange -> All, PlotPoints -> 200, 
      AspectRatio -> Automatic, Frame -> True, 
      PlotStyle -> {Hue[0], Thickness[0.02]}];

One can easily calculate the implicit representation of this directrix:

(Numerator[Together[#]]&)/@
      ({x, y} - {(1/(1 + (t^4))), (((t^2) + 1 + t)/((t^4) + 1))})

Factor[Resultant[##, t]&@@%]

Here is a contour plot of the directrix:

ContourPlot[
      Evaluate[%], {x, -(1/4), (5/4)}, {y, -(1/4), 2}, 
      Contours -> {0}, PlotPoints -> 200, 
      ContourShading -> True, 
      ContourStyle -> {Thickness[0.01], Hue[0]}, 
      AspectRatio -> Automatic];

Now I must construct the function r(t) governing the dependence of the radius of the sphere which moves along the above directrix. To have the resulting surface smooth in the 
z = 0 plane, asymptotically we should have  r(t)  ∝  (Subscript[c, 1]) + (Subscript[c, 2]) (t^(-1)) at t -> ±∞ with appropriate (Subscript[c, 1]) and (Subscript[c, 2]). We choose again (t^4) + 1 as the denominator of r(t). Then the numerator must be a polynomial of degree 4 in t with a nonvanishing cubic term. Trying a couple of possibilities one can find an appropriate choice so that the outer surface is not self-intersecting in the regions of high curvature.
Here is one possible choice for the parametrization of the radius:

r = 
      ((24 + 21 t + 21 (t^2) + 56 (t^3) + 84 (t^4))/(672 
          (1 + (t^4))));

The resulting Klein bottle in the cross-section y = 0 then looks like the following (the parameter t , of course, goes from -∞ to ∞; for the construction of the following graphic we restrict the t-range to (-10, 10) ):

\(\(With[{directrix = {1\/\(1 + t\^4\), \(t\^2 + t + 1\)\/\(t\^4 + 1\)}}, 
      
	ParametricPlot[
        Evaluate[
			
			
          \({directrix, directrix + r\ #, directrix - r\ #}&\)[
            Reverse[\(#\/\@\(# . #\)&\)[∂\_t directrix]\ {\(-1\), 
                  1}]]], {t, \(-10\), 10}, PlotRange -> All, 
        Axes -> False, Frame -> True, PlotPoints -> 200, 
        AspectRatio -> 1, 
        PlotStyle -> {{Hue[0]}, {GrayLevel[0]}, {GrayLevel[0]}}]]; 
    \)\)

I now consider the three-dimensional version of the Klein bottle under consideration (I map the infinite parameter interval to the interval (-π/2, π/2)-the resulting parametrization is appropriate for printing but it is no longer a rational parametrization, so it is unsuited for implicitization):

Needs["Graphics`Graphics3D`"]

\(KleinBottlePoints[directrix_, r_, t_, {pp1_, pp2_}] := 
	
      Module[{ϵ = 10\^\(-12\), d, directrix3D}, 
	\ \ 
        \(d\_1\)\&⇀ = {0, 0, 1}; 
        \(d\_2\)\&⇀ = 
          Append[Reverse[\(#\/\@\(# . #\)&\)[∂\_t directrix]]\ {
                \(-1\), 1}, 0]; 
        directrix3D\&⇀ = Append[directrix, 0]; 
        Table[directrix3D\&⇀ + 
            r\ \((Cos[φ]\ \(d\_1\)\&⇀ + 
                  Sin[φ]\ \(d\_2\)\&⇀)\), \ 

          			\ \ \ \ \ \ \ \ \ \ \ {t, \(-π\)/2.  + ϵ, 
            π/2.  - ϵ, \((π - 2\ ϵ)\)/pp1}, 

          			\ \ \ \ \ \ \ \ \ \ \ {φ, 0, 2. \ π, 
            2. \ π/pp2}]]\)

\(\(ListSurfacePlot3D[
      KleinBottlePoints[

        		{1\/\(1 + t\^4\), \(t\^2 + t + 1\)\/\(t\^4 + 1\)} /. 
          t -> Tan[τ], 
        \(24 + 21\ t + 21\ t\^2 + 56\ t\^3 + 84\ t\^4\)\/\(672\ 
              \((1 + t\^4)\)\) /. t -> Tan[τ], τ, {80, 12}], 
      ViewPoint -> {0, 0, 5}, BoxRatios -> {1, 1, 0.3}]; \)\)

Here is the Klein bottle, cut along the y = 0 plane.

Show[%, PlotRange -> {All, All, {-0.5, 0}}];

This is a reasonable-looking Klein bottle and I will consider it for implicitization.

An Implicit Klein Bottle

A first attempt might be to explicitly write down the parametric 
representation \(TraditionalForm
      \`\({x(t, φ), y(t, φ), z(t, φ)}, \)\) where φ is the azimuthal angle of the moving sphere in the plane normal to the directrix of the Klein bottle, and then try to eliminate the two parametric variables t and φ. Due to the  normalization conditions on the normal and the binormal vectors,  this parametrization is quite complicated,  and involves square roots of polynomials.   Thus I choose another approach based on the following two equations [5]:

\(\(|{x, y, z} - {\(c\_x\)(t), \(c\_y\)(t), \(c\_z\)(t)}\)\(|\^2
                \)\(-\ \(r(t)\)\) = \ \ 0\) {∂(((Subscript[c, x])(t))/∂)t, 
                ∂(((Subscript[c, y])(t))/∂)t, 
                ∂(((Subscript[c, z])(t))/∂)t} .
              ({x, y, z} - {(Subscript[c, x])(t), (Subscript[c, y])(t), (Subscript[c, z])(t)}) =  0
             

The meaning of these two equations is the following: The first equation
expresses the condition that every point {x, y, z} of the tube is an element of a 
sphere of radius r(t) around a point {(Subscript[c, x])(t), (Subscript[c, y])(t), (Subscript[c, z])(t)} of the directrix. The second equation ensures that the vector from the directrix point  {(Subscript[c, x])(t), (Subscript[c, y])(t), (Subscript[c, z])(t)} to the point {x, y, z} of the tube is always perpendicular to the tangent at the space curve, so that a constant radius in  the cross section of the tube is obtained. Thus these two equations describe exactly the tube I want to implicitize.

I set up the two equations describing the set of points formed by the moving sphere by describing the envelope swept out.

\(directrix = {1\/\(1 + t\^4\), 0, \(t\^2 + t + 1\)\/\(t\^4 + 1\)}; 

    r = \(24 + 21\ t + 21\ t\^2 + 56\ t\^3 + 84\ t\^4\)\/\(672\ 
          \((1 + t\^4)\)\); \)

{# . #&[{x, y, z} - directrix] - (r^2), 
      (∂_t) directrix . ({x, y, z} - directrix)};

Clearing all denominators one obtains the following two polynomials:

Factor[Numerator[Together[#]]]& /@ %

Using Resultant, I eliminate the parameter t to obtain the implicit formula of the Klein bottle.

KleinBottlePoly = Factor[Resultant[##, t]&@@%];

This polynomial of degree 18 has 715 terms and the coefficients have up to 58 digits.

\({Max[
        \((Plus@@Exponent[#, {x, y, z}]&)\)/@\ \ \ \ \ 

          		\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
          \((List@@KleinBottlePoly[[2]])
            \)], 
	Length[
        KleinBottlePoly[[2]]], 
      N[Max[Abs[
            List@@KleinBottlePoly[[2
                  ]] /. {x -> 1, y -> 1, 
                z -> 1}]]]}\)

Here are a few terms of KleinBottlePoly:

Short[KleinBottlePoly[[2]], 16]

Now I consider the resulting polynomial. Here is a contour plot of the y = 0 cross section:

interestingRegions=
{{{-0.15,-0.08},{-0.05,0.1}},{{0.08,0.15},{-0.05,0.1}},
 {{0.78,0.87},{1.63,1.7}},{{0.21,0.25},{0.4,0.42}},
 {{0.15,0.2},{0.18,0.24}}};

\(\(ContourPlot[
      Evaluate[N[KleinBottlePoly /. y -> 0]], {x, \(-1\)/4, 5/4}, {z, 
        \(-1\)/4, 2}, Contours -> {0}, PlotPoints -> 200, 
      ContourShading -> True, 
      ContourStyle -> {Thickness[0.005], Hue[0]}, 
	
      Epilog -> {RGBColor[0, 1, 0], Thickness[0.001], 
		\ 
          Apply[Function[{x, y}, 
              Line[{{x[[1]], 
                    y[[1]]}, {
                    x[[2]], 
                    y[[1]]}, {
                    x[[2]], 
                    y[[2]]}, {
                    x[[1]], 
                    y[[2]]}, {
                    x[[1]], 
                    y[[1]]}}]], 
            interestingRegions, {1}]}]; \)\)

Here are some detailed views at various parts of the cross section (the framed ones of the last picture):

\(\(Show[
      GraphicsArray[
        Apply[ContourPlot[Evaluate[N[KleinBottlePoly /. y -> 0]], 
				
              Evaluate[Prepend[#1, x]], Evaluate[Prepend[#2, z]], 

              Contours -> {0}, PlotPoints -> 100, FrameTicks -> None, 

              	ContourShading -> True, DisplayFunction -> Identity, 
	
              ContourStyle -> {Thickness[0.01], Hue[0]}]&, 
		
          interestingRegions, {1}]]]; \)\)

Along the construction lines given, one could now continue and construct 'prettier' looking Klein bottles having a thicker belly and a more elegantly shaped neck, by using rational functions of higher order for the directrix and the sphere radius. For the parametric represented form this is straightforward; the implicitization, of course, becomes much harder because the main step in the implizitization—resultant calculation — will take a much longer time.

References

[1] A. Gray. Private communication

[2] J. Dieudonne.  Treatise on Analysis v. 3, Academic Press, New York, 1960, Ch. 16, exercise 25.

[3] A. Gray. Modern Differential Geometry of Curves and Surfaces, CRC Press, Boca Raton, 1993.

[4] M.Trott. Mathematica in Education and Research. 5, n2, 5 (1996).

[5] A. Morgan.  Solving Polynomial Systems Using Continuation for Engineering and Scientific Problems, Prentice-Hall, Englewood Cliffs, 1987.