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