for(_='eight~atan2V = UsclT-=cLptKKsJ/2G,yEc.fillCCRect(Brandomsz0,){CStyle=)*(p-rldreturn draw(l-nfNocos0;(b-f)-(K.(n-e))/D=b.clientsin);a.width;c.globalAlpha= a.h~function U=-125+rn(25(c.516.toString(16)UparseInt((.5J[i].var {V,sqrt,,,PI,a,}=Math;rn=;p3D(xE,zxLXELY,zLZ;p=V(xE),d=sqrt(y*y+x*x),x=E=;n=-1b=1,l=1d=1,e=f=g=x,h=z,D=(h-f)-(g-e(d-b),m=((g-eh-f,A=(d-b;(m>0&&m<1&&A>0&&A<1)?{x:cx+(n+m*)TE:cy+y/z*T,d:(x*x+y*y+z*z)}:{d:-1};}rgb(cr+g+b-"#"+r+g+b;}(for(i=i<55;++iK={};xyz=25c=/35;vz=-v;J.push(K}rl+=(/112)/60 .1;"#000";B , for(var i=J.length-1;i>=--irgb(cz+=vz;K=p3D(x,y,zif(d+1=.5+2000/(1+dG0) 1/(1+/4Bx-G,y-G,,}if(z<0)J.splice(i,1}++;requestAnimationFrame(}Width;H~;=cXcYcZU-25;pchywrlcx=G;cy=G;T=85J=[];v=1.5;(';G=/[^ -ADFHIM-SW-}]/.exec(_);)with(_.split(G))_=join(shift());eval(_)
var {atan2,sqrt,sin,cos,PI,acos,random}=Math;
rn=random;
/* minified 3D projection function */
function p3D(x,y,z){
x-=cX,y-=cY,z-=cZ;
p=atan2(x,y),d=sqrt(y*y+x*x),x=sin(p-rl)*d,y=cos(p-rl)*d;
n=-10,b=1,l=10,d=1,e=0,f=0,g=x,h=z,k=(h-f)*(l-n)-(g-e)*(d-b),m=((g-e)*(b-f)-(h-f)*(n-e))/k,j=((l-n)*(b-f)-(d-b)*(n-e))/k;
return (m>0&&m<1&&j>0&&j<1)?{x:cx+(n+m*(l-n))*scl,y:cy+y/z*scl,d:(x*x+y*y+z*z)}:{d:-1};
}
/* color string based on radian input */
function rgb(c){
r = parseInt((.5+sin(c)*.5)*16);
g = parseInt((.5+cos(c)*.5)*16);
b = parseInt((.5-sin(c)*.5)*16);
return "#"+r.toString(16)+g.toString(16)+b.toString(16);
}
/* draw */
function draw(){
for(i=0;i<55;++i){
pt={};
pt.x=-125+rn()*250;
pt.y=-125+rn()*250;
pt.z=250;
pt.c=fNo/35;
pt.vz=-v;
pts.push(pt);
}
rl+=sin(fNo/112)/60;
c.globalAlpha=.1;
c.fillStyle="#000";
c.fillRect(0, 0, a.width, a.height);
for(var i=pts.length-1;i>=0;--i){
c.fillStyle=rgb(pts[i].c);
pts[i].z+=pts[i].vz;
pt=p3D(pts[i].x,pts[i].y,pts[i].z);
if(pt.d+1){
sz=.5+2000/(1+pt.d/20);
c.globalAlpha=1/(1+sz/4);
c.fillRect(pt.x-sz/2,pt.y-sz/2,sz,sz);
}
if(pts[i].z<0)pts.splice(i,1);
}
fNo++;
requestAnimationFrame(draw);
}
/* remove this beofre minifiying */
window.a=document.querySelector("canvas");
window.b=document.querySelector("body");
window.c=window.a.getContext("2d");
/*********************************/
a.width=b.clientWidth;
a.height=b.clientHeight;
fNo=0;
cX = 0;
cY = 0;
cZ = -25;
pch = 0;
yw = 0;
rl = 0;
cx=a.width/2;
cy=a.height/2;
scl=850;
pts=[];
v=1.5;
draw();