Fun with stars

Script version 2: Using Zip()

n=10 Ln = 1..n #--------------------------------------- # Position #--------------------------------------- Execute(Zip("posx"+k+" = Slider(-20, 20, 0.001, 1, 140, false, true, false, false)", k, Ln)) Execute(Zip("posy"+k+" = Slider(-20, 20, 0.001, 1, 140, false, true, false, false)", k, Ln)) Execute(Zip("SetVisibleInView(posx"+k+", 1, false)", k, Ln)) Execute(Zip("SetVisibleInView(posy"+k+", 1, false)", k, Ln)) Execute(Zip("SetValue(posx"+k+", RandomUniform(-15, 15))", k, Ln)) Execute(Zip("SetValue(posy"+k+", RandomUniform(-10, 10))", k, Ln)) #--------------------------------------- # Velocity #--------------------------------------- Execute(Zip("velx"+k+" = Slider(-0.3, 0.3, 0.001, 1, 140, false, true, false, false)", k, Ln)) Execute(Zip("vely"+k+" = Slider(-0.3, 0.3, 0.001, 1, 140, false, true, false, false)", k, Ln)) Execute(Zip("SetVisibleInView(velx"+k+", 1, false)", k, Ln)) Execute(Zip("SetVisibleInView(vely"+k+", 1, false)", k, Ln)) Execute(Zip("SetValue(velx"+k+", RandomUniform(-0.3, 0.3))", k, Ln)) Execute(Zip("SetValue(vely"+k+", RandomUniform(-0.3, 0.3))", k, Ln)) #--------------------------------------- #Attractor #--------------------------------------- Otx=Slider(-15,15, 0.001, 1, 140, false, true, false, false) Oty=Slider(-10,10, 0.001, 1, 140, false, true, false, false) SetValue(Otx, 0) SetValue(Oty, 0) SetVisibleInView(Otx, 1, false) SetVisibleInView(Oty, 1, false) A=(Otx, Oty) SetCaption(A, "Drag") #--------------------------------------- # Direction #--------------------------------------- Execute(Zip("dirx"+k+" = Otx - posx"+k+"", k, Ln)) Execute(Zip("diry"+k+" = Oty - posy"+k+"", k, Ln)) Execute(Zip("norm"+k+" = sqrt( (dirx"+k+")^2 + (diry"+k+")^2 )", k, Ln)) Execute(Zip("scalex"+k+" = RandomUniform(0.0005, 0.009)"+k+"", k, Ln)) Execute(Zip("scaley"+k+" = RandomUniform(0.0005, 0.009)"+k+"", k, Ln)) #--------------------------------------- # Acceleration #--------------------------------------- ##normalize and scale## Execute(Zip("accx"+k+"=(Otx - posx"+k+") / norm"+k+" * scalex"+k+"", k, Ln)) Execute(Zip("accy"+k+"=(Oty - posy"+k+") / norm"+k+" * scaley"+k+"", k, Ln)) #--------------------------------------- # Stars #--------------------------------------- r(α) = 1.5(0.4 + 0.1*sin(5α)) SetVisibleInView(r, 1, false) #star = Curve((r(α);α)+(x, y), α, 0, 2pi) Execute(Zip("angle"+k+"=atan2( posy"+k+", posx"+k+" )", k, Ln)) Execute(Zip("SetVisibleInView(angle"+k+", 1, false)", k, Ln)) Execute(Zip("star"+k+"= Rotate( Curve((r(α);α)+(posx"+k+", posy"+k+"), α, 0, 2pi), angle"+k+", (posx"+k+", posy"+k+") )", k, Ln)) Execute(Zip("ShowLabel(star"+k+", false)", k, Ln)) Execute(Zip("SetDynamicColor(star"+k+", 255/255, 215/255, 0/255, 1)", k, Ln)) #--------------------------------------- # For animation #--------------------------------------- Run=Slider(-5, 5, 0.01, 1, 140, false, true, false, false) ShowLabel(Run, false) SetVisibleInView(Run, 1, false) #------------------------------------------------------ #After Run is defined add this script in Update #------------------------------------------------------ #Execute(Zip("SetValue(velx"+k+", velx"+k+" + accx"+k+" )", k, Ln)) #Execute(Zip("SetValue(vely"+k+", vely"+k+" + accy"+k+" )", k, Ln)) #Execute(Zip("SetValue(posx"+k+", posx"+k+" + velx"+k+" )", k, Ln)) #Execute(Zip("SetValue(posy"+k+", posy"+k+" + vely"+k+" )", k, Ln)) #--------------------------------------- #Extra settings #--------------------------------------- SetBackgroundColor("Black") ShowAxes(false) ShowGrid(false) CenterView(A) a=false SetCaption(a, "Run") SetValue(a, false) SetColor(a, "White") #------------------------------------------------------ #After boolean is defined add this script in Update #------------------------------------------------------ #StartAnimation(Run, a)

Script version 1: Using Sequence()

#--------------------------------------- # Position #--------------------------------------- n=10 Execute(Sequence("A"+i+"=Slider(-20, 20, 0.001, 1, 140, false, true, false, false)", i, 1, n)) Execute(Sequence("B"+i+"=Slider(-20, 20, 0.001, 1, 140, false, true, false, false)", i, 1, n)) Execute(Sequence("SetVisibleInView(A"+i+", 1, false)", i, 1, n)) Execute(Sequence("SetVisibleInView(B"+i+", 1, false)", i, 1, n)) Execute(Sequence("SetValue(A"+i+", RandomUniform(-15, 15))", i, 1, n)) Execute(Sequence("SetValue(B"+i+", RandomUniform(-10, 10))", i, 1, n)) #--------------------------------------- # Velocity #--------------------------------------- Execute(Sequence("E"+i+"=Slider(-0.3, 0.3, 0.001, 1, 140, false, true, false, false)", i, 1, n)) Execute(Sequence("F"+i+"=Slider(-0.3, 0.3, 0.001, 1, 140, false, true, false, false)", i, 1, n)) Execute(Sequence("SetVisibleInView(E"+i+", 1, false)", i, 1, n)) Execute(Sequence("SetVisibleInView(F"+i+", 1, false)", i, 1, n)) Execute(Sequence("SetValue(E"+i+", RandomUniform(-0.3, 0.3))", i, 1, n)) Execute(Sequence("SetValue(F"+i+", RandomUniform(-0.3, 0.3))", i, 1, n)) #--------------------------------------- #Attractor #--------------------------------------- Otx=Slider(-15,15, 0.001, 1, 140, false, true, false, false) Oty=Slider(-10,10, 0.001, 1, 140, false, true, false, false) SetVisibleInView(Otx, 1, false) SetVisibleInView(Oty, 1, false) A=(Otx, Oty) #--------------------------------------- # Direction #--------------------------------------- Execute(Sequence("G"+i+"=Otx-A"+i+"", i, 1, n)) Execute(Sequence("H"+i+"=Oty-B"+i+"", i, 1, n)) Execute(Sequence("I"+i+"=sqrt( (G"+i+")^2+(H"+i+")^2 )", i, 1, n)) Execute(Sequence("S"+i+"=RandomUniform(0.0005, 0.009)"+i+"", i, 1, n)) Execute(Sequence("T"+i+"=RandomUniform(0.0005, 0.009)"+i+"", i, 1, n)) #scale=0.06 #--------------------------------------- # Acceleration #--------------------------------------- ##normalize and scale## Execute(Sequence("J"+i+"=(Otx-A"+i+")/I"+i+"*S"+i+"", i, 1, n)) Execute(Sequence("K"+i+"=(Oty-B"+i+")/I"+i+"*T"+i+"", i, 1, n)) #--------------------------------------- # Stars #--------------------------------------- r(α) = 1.5(0.4 + 0.1*sin(5α)) SetVisibleInView(r, 1, false) #star = Curve((r(α);α)+(x, y), α, 0, 2pi) Execute(Sequence("C"+i+"=atan2(B"+i+", A"+i+")", i, 1, n)) Execute(Sequence("SetVisibleInView(C"+i+", 1, false)", i, 1, n)) Execute(Sequence("D"+i+"= Rotate( Curve((r(α);α)+(A"+i+", B"+i+"), α, 0, 2pi), C"+i+", (A"+i+", B"+i+") )", i, 1, n)) Execute(Sequence("SetDynamicColor(D"+i+", 255/255, 215/255, 0/255, 1)", i, 1, n)) #--------------------------------------- # For animation #--------------------------------------- Run=Slider(-5, 5, 0.01, 1, 140, false, true, false, false) ShowLabel(Run, false) SetVisibleInView(Run, 1, false) #------------------------------------------------------ #After Run is defined add this script in Update #------------------------------------------------------ #Execute(Sequence("SetValue(E"+i+", E"+i+" + J"+i+" )", i, 1, n)) #Execute(Sequence("SetValue(F"+i+", F"+i+" + K"+i+" )", i, 1, n)) #Execute(Sequence("SetValue(A"+i+", A"+i+" + E"+i+" )", i, 1, n)) #Execute(Sequence("SetValue(B"+i+", B"+i+" + F"+i+" )", i, 1, n)) #--------------------------------------- #Extra settings #--------------------------------------- SetBackgroundColor("Black") ShowAxes(false) ShowGrid(false) a=false SetValue(a, false) SetColor(a, "White")