Coloring the Moebius Strip and Its
Parallel Surfaces

Alfred Gray

Parallel Surfaces

Let  M be a surface in Euclidean space  R3.  The parallel surface at a distance  t  to  M  is defined to be

Mt  =   { p Î R3 |  distance(p, M) = t }

If  M  is orientable (that is, two-sided), the parallel surface has
 two components.  On the other hand, if   M  is nonorientable (that is, one-sided) the parallel surface   Mt   is connected.  Furthermore, when  M  is nonorientable the parallel surface   Mt   is orientable.  The purpose of this notebook is to illustrate these facts is the case of one of the simplest nonorientable surfaces, the Moebius strip.

We can describe a surface in  R3  parametrically as a triple of functions of two variables:

x(u,v) = (f(u,v),g(u,v),h(u,v))

The same definition written in Mathematica syntax is

x[u_,v_]:= {f[u,v], g[u,v], h[u,v]}

where  f[u,v], g[u,v] and h[u,v] are known functions.

The Moebius Strip

The Moebius strip can be defined in Mathematica by the command

moebiusstrip[u_,v_]:={Cos[u] + v Cos[u/2] Cos[u],
        Sin[u] + v Cos[u/2] Sin[u],v Sin[u/2]}

and drawn with the command

ParametricPlot3D[moebiusstrip[u,v]//Evaluate,
{u,0,2Pi},{v,-.3,.3},
PlotPoints->{30,4},
Axes->None,Boxed->False];

Defining Parallel Surfaces in Mathematica

To describe the parallel surface   Mt,  we need a Mathematica
operator parsurf that produces from  a parametrization  x  of   M   a parametrization  parsurf[x][t] of  Mt .  Since we may want to draw surfaces at different distances  t  from M,  we should include  t  as a variable.  The following miniprogram  does the job:

parsurf[x_][t_][u_,v_]:=Module[{xu,xv,n1,n2,n3,n4},
        xu = Derivative[1,0][x][u,v];
        xv = Derivative[0,1][x][u, v];
        n1 = Cross[xu, xv]//Simplify;
        n2 = Simplify[Factor[n1.n1]];
        n3 = PowerExpand[n2^(1/2)]//Simplify;
        n4 = Simplify[n1/n3];
        Simplify[Together[x[u,v] + t*n4]]]

This command may be broken down as follows.  First one defines the tangent vectors  xu  and  xv.  Then  n1 is the cross product of  xu  and  xv, and  n4  is a unit length vector pointing in the same direction as  n1.  For fixed  t the surface  Mt  has the parametric representation
                                x[u,v] + t n4

Coloring Surfaces in Mathematica

Usually the command  ParametricPlot3D, when used to plot surfaces, takes as its argument a  3-tuple.  However, it can also take a 4-tuple as an argument.  In order to add a color specification we use Mathematica's
command Append to change a 3-tuple into a 4-tuple.  For example,

Append[surf,Red]

adds the color specification  Red to  surf.  To color the sides of a
surface different colors we can use

Append[surf,FaceForm[Red,Green]]

Mathematica's package   Color.m  contains a wide variety of solid colors.  Before these colors can be used in Mathematica
we need to read in this package with the command

Needs["Graphics`Colors`"]

Coloring the Moebius Strip

For example, we can the color of the Moebius strip red  with the  command

ParametricPlot3D[
Append[moebiusstrip[u,v],Red]//Evaluate,
{u,0,2Pi},{v,-.3,.3},
PlotPoints->{30,4},
Lighting->False,
Axes->None,Boxed->False];

Parallel Surfaces to the Moebius Strip

The command to draw the parallel surface at a distance  0.3  to a  Moebius strip is

ParametricPlot3D[
parsurf[moebiusstrip][0.3][u,v]//Evaluate,
{u,0,4Pi},{v,-.3,.3},
PlotPoints->{60,4},
Axes->None,Boxed->False];

A more informative picture can be obtained using the graphics command  FaceForm  to color different sides of the polygons that Mathematica uses to approximate a surface. To use  FaceForm  we replace  color by  FaceForm[color1,color2].  Thus, for example,

ParametricPlot3D[
Append[
moebiusstrip[u,v],FaceForm[Red,Yellow]]//Evaluate,
{u,0,2Pi},{v,-.3,.3},
PlotPoints->{30,4},
Axes->None,Boxed->False,
Lighting->False];

Since the Moebius strip is nonorientable, any attempt to cover all the backs and fronts of polygons consistently must fail; in other words, the two colors must meet.

On the other hand, since a parallel surface to a Moebius strip is orientable, it is possible to color its back and front with different colors in order to distinguish the two sides of the surface parallel
to the Moebius strip.  The four-color version of a Moebius strip and one of its parallel surfaces is generated by the command

Show[
ParametricPlot3D[
Append[
moebiusstrip[u,v],FaceForm[Red,Yellow]]//Evaluate,
{u,0,2Pi},{v,-.3,.3},
PlotPoints->{30,4},
DisplayFunction->Identity],
ParametricPlot3D[
Append[parsurf[moebiusstrip][0.3][u,v],
FaceForm[Green,Blue]]//Evaluate,
{u,0,4Pi},{v,-.3,.3},
PlotPoints->{60,4},
DisplayFunction->Identity],
Axes->None,Boxed->False,
Lighting->False,
DisplayFunction->$DisplayFunction];

Implementation

Needs["Graphics`Colors`"]

Cross[u_List,v_List]:=
        RotateLeft[u RotateLeft[v] -
        RotateLeft[u] v] /;
        Length[u] == Length[v] == 3

parsurf[x_][t_][u_,v_]:=Module[{xu,xv,n1,n2,n3,n4},
        xu = Derivative[1,0][x][u,v];
        xv = Derivative[0,1][x][u, v];
        n1 = Cross[xu, xv]//Simplify;
        n2 = Simplify[Factor[n1.n1]];
        n3 = PowerExpand[n2^(1/2)]//Simplify;
        n4 = Simplify[n1/n3];
        Simplify[Together[x[u,v] + t*n4]]]

moebiusstrip[u_,v_]:= {Cos[u] + v Cos[u/2] Cos[u],
        Sin[u] + v Cos[u/2] Sin[u],v Sin[u/2]}

References

M. P. do Carmo, Differential Geometry of Curves and Surfaces, Prentice-Hall, Englewood Cliffs, New Jersey, 1976.

A. Gray,  Tubes, Addison-Wesley, The Advanced Book Program, Redwood City, 1991.

A. Gray,  Modern Differential Geometry of Curves and Surfaces, CRC Press, 1992.

R. Maeder, Programming in Mathematica, Second Edition,
Addison-Wesley, The Advanced Book Program, Redwood City, California, 1991.

 B. O'Neill,  Elementary Differential Geometry, Academic Press, London-New York (1966).

 S. Wolfram,  Mathematica, Second Edition, Addison-Wesley,
The Advanced Book Program, Redwood City, California,  1990.

Address

Department of Mathematics
 University of Maryland
 College Park, MD 20742

 E-Mail:  gray@bianchi.umd.edu