Umbilic torus

Topic:
Surface

Script version 1

Fx(x,y) = sin(x) * (7 + cos(x/3 - 2*y) + 2 * cos(x/3 + y)) Fy(x,y) = cos(x) * (7 + cos(x/3 - 2*y) + 2 * cos(x/3 + y)) Fz(x,y) = sin(x/3 - 2 * y) + 2 * sin(x/3 + y) g(x) = 1/2 * (sin(x) + 1) t = Slider(0, 2 pi, 0.01, 1, 150, false, true, false, false) a = Surface(Fx(u,v), Fy(u,v), Fz(u,v), u, -pi, pi, v, -pi, pi) n = 60 L_1 = Sequence(-pi + (2 pi)/ n * k, k, 0, n) L_2 = Sequence(-pi + (2 pi)/ n * (k+1), k, 0, n) L_3 = Sequence(Surface(Fx(u, v), Fy(u, v), Fz(u, v), u, -pi, pi, v, Element(L_1, k), Element(L_2, k)), k, 1, n) Execute(Sequence("A"+k+" = Surface(Fx(u, v), Fy(u, v), Fz(u, v), u, Element(L_1, "+k+"), Element(L_2, "+k+"), v, -pi, pi)", k, 1, n)) Execute(Sequence("SetDynamicColor(A"+k+", g("+k+"/n * 2 * pi + t), 0.53, 0.89, 1)", k, 1, n))

Script version 2

Fx(x,y) = sin(x) * (7 + cos(x/3 - 2*y) + 2 * cos(x/3 + y)) Fy(x,y) = cos(x) * (7 + cos(x/3 - 2*y) + 2 * cos(x/3 + y)) Fz(x,y) = sin(x/3 - 2 * y) + 2 * sin(x/3 + y) g(x) = 1/2 * (sin(x) + 1) t = Slider(0, 2 pi, 0.01, 1, 150, false, true, false, false) a = Surface(Fx(u,v), Fy(u,v), Fz(u,v), u, -pi, pi, v, -pi, pi) n = 60 LK = 0..n L_1 = Zip(-pi + (2 pi)/ n * k, k, LK) L_2 = Zip(-pi + (2 pi)/ n * (k+1), k, LK) #L_3 = Zip(Surface(Fx(u, v), Fy(u, v), Fz(u, v), u, -pi, pi, v, a, b), a, L_1, b, L_2) Execute(Zip("A"+k+" = Surface(Fx(u, v), Fy(u, v), Fz(u, v), u, "+a+", "+b+", v, -pi, pi)", a, L_1, b, L_2, k, 1..n)) #------------------- # Settings #------------------- Execute(Zip("SetDynamicColor(A"+k+", g("+k+"/n * 2 * pi + t), 0.53, 0.89, 1)", k, 1..n)) Execute(Zip("SetLineThickness(A"+k+", 0)", k, 1..n)) Execute(Zip("ShowLabel(A"+k+", false)", k, 1..n)) SetVisibleInView(Fx, -1, false) SetVisibleInView(Fy, -1, false) SetVisibleInView(Fz, -1, false) SetVisibleInView(g, -1, false) SetVisibleInView(g, 1, false) SetVisibleInView(a, -1, false)