My 3D plot of a Klein bottle doesn't look right

Here's my slight simplification of the Klein bottle parametric equations. I believe the original parametrization is due to Stewart Dickson (whose depiction of the bottle was in the "Graphics Gallery" of the old versions of The Mathematica Book).

ParametricPlot3D[{6 Cos[u] (1 + Sin[u]), 16 Sin[u], 0} + 2 (2 - Cos[u])
                 {Cos[Clip[u, {0, π}]] Cos[v], Sin[Clip[u, {0, π}]] Cos[v], Sin[v]},
                 {u, 0, 2 π}, {v, 0, 2 π}, Lighting -> "Classic", Mesh -> False,
                 PlotStyle -> Opacity[2/3, ColorData["Legacy", "AliceBlue"]]]

translucent Klein bottle

I have elected to use translucency instead to reveal the inner structure of the bottle. If you want to cut the bottle, just restrict the parameter ranges, like so:

ParametricPlot3D[{6 Cos[u] (1 + Sin[u]), 16 Sin[u], 0} + 2 (2 - Cos[u])
                 {Cos[Clip[u, {0, π}]] Cos[v], Sin[Clip[u, {0, π}]] Cos[v], Sin[v]},
                 {u, 0, 2 π}, {v, π, 2 π}, Mesh -> False, PlotTheme -> "Classic"]

half a bottle

(Have a look at Franzoni's article as well to see other possible variations.)


Description

For fun, thought I give it a try. Below is an example of my attempt to Plot Kleins bottle.

Code

klein[u_, v_] := Module[{
   bx = 6 Cos[u] (1 + Sin[u]),
   by = 16 Sin[u],
   rad = 4 (1 - Cos[u]/2),
   X, Y, Z},
  X = If[Pi < u <= 2 Pi, bx + rad Cos[v + Pi], bx + rad Cos[u] Cos[v]];
  Y = If[Pi < u <= 2 Pi, by, by + rad Sin[u] Cos[v]];
  Z = rad Sin[v];
  {X, Y, Z}
  ]

ParametricPlot3D[klein[u, v], {u, 0, 2 Pi}, {v, 0, 2 Pi}, Axes -> False, Boxed -> False]

Output

klein bottle


This is just to give a solution based on minimal correction of the OP's code.

a[u_] := 6 Cos[u] (1 + Sin[u])
b[u_] := 16 Sin[u]
c[u_] := 4 (1 - Cos[u]/2)

fx[u_, v_] := If[Pi < u <= 2 Pi, a[u] + c[u] Cos[v + Pi], a[u] + c[u] Cos[u] Cos[v]];
fy[u_, v_] := If[Pi < u < 2 Pi, b[u], b[u] + c [u] Sin[u]];
fz[u_, v_] := c[u] Sin[v];

ParametricPlot3D[{fx[u, v], fy[u, v], fz[u, v]}, {u, 0, 2 Pi}, {v, 0, 2 Pi}, 
  Boxed -> False, Axes -> False]

klein