Rainbow Voronoi on sphere

[size=150]#=======================[br]# Inspired by Daniel Mentrard[br]#=======================[br][br]#=======================[br]# Initial values[br]#=======================[br][br]N = 140[br]M = Slider(20, N, 1, 1, 160, false, true, false, false)[br]SetValue(M, N)[br]Lm = Sequence(1, M)[br][br]speed = 0.001[br]a = Slider(0, 6.2812, 0.001, speed, 130, false, true, false, false)[br]SetValue(a, 1 / 2 + sqrt(5) / 2)[br][br]#=======================[br]# Functions[br]#=======================[br][br]Px(x) = cos(pi * 2 * a * x) * sin(acos(1 - 2 * x / M))[br]Py(x) = sin(pi * 2 * a * x ) * sin(acos(1 - 2 * x / M))[br]Pz(x) = cos(acos(1 - 2 * x / M))[br][br]#=============================[br]# List of names for centers and spheres[br]#=============================[br][br]Sname = Zip("sphere"+Text(m), m, Lm)[br]Pname = Zip("C"+Text(m), m, Lm)[br][br]#=======================[br]# Points and spheres[br]#=======================[br][br]Ps = Zip((Px(k), Py(k), Pz(k)), k, Lm)[br][br]Execute(Zip(name" = Midpoint(Element(Ps, "+k+"), (0,0,0))", name, Pname, k, Lm))[br]Execute(Zip(name" = Sphere( C"+k+", 1 / 2 )", name, Sname, k, Lm))[br]Execute(Zip("ShowLabel("+name+", false)", name, Sname))[br]Execute(Zip("SetDynamicColor("+name+", "+k+"/N, 0.85, 1, 1)", name, Sname, k, Lm))[br]Execute(Zip("SetConditionToShowObject("+name+", "+k+"<=M)", name, Sname, k, Lm))[br][br]#=======================[br]# Settings :-)[br]#=======================[br][br]SetVisibleInView(M, 1, true)[br][br]SetVisibleInView(Pname, 1, false)[br]SetVisibleInView(Sname, 1, false)[br]SetVisibleInView(Pname, -1, false)[br]SetVisibleInView(Sname, -1, false)[br][br]SetVisibleInView(Ps, 1, false)[br]SetPointSize(Ps, 2)[br]SetColor(Ps, "Black")[br][br]ShowAxes(false)[br]ShowGrid(false)[br]SetBackgroundColor("GAINSBORO")[/size]

Information: Rainbow Voronoi on sphere