letmarbles=[]//lostandfound-maybefunctionpreload(){for(leti=0;i<7;i++){marbles[i]=loadImage("/assets/v"+(i+1)+".png");//coatedinlife(petridishpics)}}functionsetup(){cnv=createCanvas(windowWidth,windowHeight,WEBGL);//createdinthethirddimensionfor2DnoStroke();}functiondraw(){t=frameCount/200;//IcouldhaveusedDegrees,butNOPEbackground(0,0,30);//justalittlebluemakesmesmileorbitControl(0.05,0.05,0.05);//don't we all just want a little control? - this is just to fake you out here - you almost had control... but then a camera was born:camera(100*abs(sin(t/3)),100*abs(sin(t/2)),100*abs(sin(t/2)),0,0,0);//perspectivechangeswitheachmomentfor(leti=0;i<3;i++){//loopsofloopspush()rotateY(PI/3*i+t);//ohthedirectionsweturnrotateX(PI/3*i-t);rotateZ(PI/3*i+t);marblesDraw(100);pop()}}functionmarblesDraw(r){push()for(leti=1;i<=7;i++){push()x=r*sin(i*PI/15*t);y=r*cos(i*PI/15*t);z=r*tan(i*PI/30*t);p=r*sin(i*t/100)+x/100;//aletterforanumber-superdescriptive...rotateX(p);translate(x,y,z);texture(marbles[i-1]);sphere(min(50/r,5),24,24);pop()push()rotateX(-p)translate(-x,-y,-z)texture(marbles[i-1])sphere(min(50/r,5),24,24);//orbsarefantasticlittletoyspop()}pop()r=r*0.92;//shrinkalittleandrepeatif(r>10){marblesDraw(r);//andhereiswhererecursionhappens}}