(* Stewart Dickson's Snail (c) 1990 *)

MakePolygons[vl_List] :=
    Block[{l = vl,
           l1 = Map[RotateLeft, vl],
           mesh},
        mesh = {l, RotateLeft[l], RotateLeft[l1], l1};
        mesh = Map[Drop[#, -1]&, mesh, {1}];
        mesh = Map[Drop[#, -1]&, mesh, {2}];
        Polygon /@ Transpose[ Map[Flatten[#, 1]&, mesh] ]
    ]

rad1 = Exp[u / (6 Pi)] - 1;
rad2 = Exp[u / (6 Pi)] - 1;
x := rad2 * Cos[u] + rad1 * Cos[u] * Cos[v];
y := rad2 * Sin[u] + rad1 * Sin[u] * Cos[v];
z := -(Exp[u / (3 Pi)] - 1) / 2 + rad1 * Sin[v];
X = Simplify[x];
Y = Simplify[y];
Z = Simplify[z];
snailpolys = MakePolygons[Table[{X, Y, Z}, {u, 0, 6 Pi, Pi / 8.125},
	{v, 0, 2 Pi, Pi / 8} ]];

centerview = {2.7, 0.5, 2.};

VecLen[{x_, y_, z_}] := Sqrt[N[x ^2 + y ^2 + z ^2]];
Cross[u_List, v_List] := Det[{{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, u, v}];
 
 Show[Graphics3D[snailpolys,Boxed->False,
        Background->RGBColor[0, 0, 0], LightSources -> 
        {{{0.7071, 0, 0.7071}, RGBColor[0.9481, 0, 0]}, 
        {{0.5773, 0.5773, 0.5773}, RGBColor[0, 0.8888, 0]}, 
        {{0, 0.7071, 0.7071}, RGBColor[0, 0, 1]}}
        ]]  
