Möbius strip with rainbow unit normal vectors

Script
[code]size = 1.8[br]F(x, y) = size * (1+y/2 * cos(x/2))*cos(x)[br]G(x, y) = size * (1+y/2 * cos(x/2))*sin(x)[br]H(x, y) = size * y/2*sin(x/2)[br][br]#a1[br]dFx = Derivative(F, x)[br]#b1[br]dFy = Derivative(F, y)[br]#a2[br]dGx = Derivative(G, x)[br]#b2[br]dGy = Derivative(G, y)[br]#a3[br]dHx = Derivative(H, x)[br]#b3[br]dHy = Derivative(H, y)[br][br]#(a2b3 - a3b2)i + (a3b1-a1b3)j + (a1b2-a2b1)[br]Px = dGx * dHy - dHx * dGy[br]Py = dHx * dFy - dFx * dHy [br]Pz = dFx * dGy - dGx * dFy[br][br]norm = sqrt( Px^2 + Py^2 + Pz^2 )[br][br]uNx = Px/norm[br]uNy = Py/norm[br]uNz = Pz/norm[br][br]Mobius = Surface( F(u, v), G(u, v), H(u, v), u, 0, 2pi, v, -1, 1 )[br][br]Ax=Slider(0, 4pi, 0.01, 1, 120, false, true, false, false)[br]Ay=Slider(-1, 1, 0.01, 1, 120, false, true, false, false)[br][br]n= 33[br]Execute(Sequence("A"+i+" = "+i+" 4*pi/n + Ax", i, 1, n))[br][br]Execute(Sequence("B"+i+" = Mobius(A"+i+", 0)", i, 1, n))[br]Execute(Sequence("SetDynamicColor(B"+i+", "+i+"/n, 1, 1)", i, 1, n))[br][br]Execute(Sequence("ShowLabel(B"+i+", false)", i, 1, n))[br]Execute(Sequence("SetVisibleInView(B"+i+", 1, false)", i, 1, n))[br][br]Execute(Sequence("C"+i+" = (uNx(A"+i+", 0), uNy(A"+i+", 0), uNz(A"+i+", 0))", i, 1, n))[br]Execute(Sequence("ShowLabel(C"+i+", false)", i, 1, n))[br]Execute(Sequence("SetVisibleInView(C"+i+", 1, false)", i, 1, n))[br]Execute(Sequence("SetVisibleInView(C"+i+", -1, false)", i, 1, n))[br][br][br]Execute(Sequence("D"+i+" = Translate(Vector((0,0,0), C"+i+"), B"+i+")", i, 1, n))[br]Execute(Sequence("ShowLabel(D"+i+", false)", i, 1, n))[br][br]Execute(Sequence("SetDynamicColor(D"+i+", "+i+"/n, 1, 1)", i, 1, n))[br][br]#A=Mobius(Ax, 0)[br][br]#B=(uNx(Ax, Ay), uNy(Ax, Ay), uNz(Ax, Ay))[br][br]#u=Translate(Vector((0,0,0), B), A)[/code]

Information: Möbius strip with rainbow unit normal vectors