(* 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]}} ]]