memoscan
← all memos

Memo 0x0eca9dc7…a07512 on Ethereum

class NoiseWalker{constructor(g,x,y,angle,frame,lifespan=0,first=!1,wscale=1){this.frame=frame,this.g=g,this.x=x,this.y=y,this.speed=1.5,this.angle=angle,this.tAng=angle,this.life=0,this.lfs=lifespan||DENSITY*(prand(30,50)/1e3)*frame.w*frame.h/max(1,wscale),this.alive=!0,this.cd=70,this.offset=prng(5e4),this.nc=0,this.nz=1e-4*prand(3,30),this.vgiro=.03,this.wires=1,this.scale=wscale,this.bTh=18*this.scale,this.vTh=6*this.scale,this.cTh=.002,this.thickness=this.bTh,this.hue=30,this.sat=5,this.bHue=[30,40],this.bSat=0,this.sides=frame.sideslist[prng(frame.sideslist.length)],this.rot=PI/2,4==this.sides&&(this.rot+=prng(2)*PI/4),2==this.sides&&(this.rot+=prng(4)*PI/4),this.rib=!prng(4),this.ribMod=prand(2,5),this.block=!1,this.blood=frame.blood,this.isOut=!1,this.coolIn=0,this.cHue(),this.dC(this.x,this.y,this.thickness),first&&this.dEnd()}move(){if(this.x+=cos(this.angle)*this.speed,this.y+=sin(this.angle)*this.speed,this.life++,this.nc+=1,this.cd--,this.alive=this.alive&&this.life<this.lfs,this.cB(),this.alive&&this.cd<0){let sides=this.sides;this.coolIn<=0?this.tAng=this.rot+floor(map(noise((this.nc+this.offset)*this.nz),0,1,0,2*sides))*TWO_PI/sides:this.nc+=REBOUND,this.tAng>TWO_PI&&(this.tAng-=TWO_PI),this.tAng<0&&(this.tAng+=TWO_PI),this.angle>TWO_PI&&(this.angle-=TWO_PI),this.angle<0&&(this.angle+=TWO_PI),this.tAng-this.angle>PI&&(this.tAng-=TWO_PI),this.tAng-this.angle<-PI&&(this.tAng+=TWO_PI),abs(this.tAng-this.angle)<=this.vgiro?this.angle=this.tAng:this.angle+=Math.sign(this.tAng-this.angle)*this.vgiro}this.life>=this.lfs&&this.dEnd()}display(){let band=floor(this.life/3)%this.ribMod>=this.rib;if(this.thickness=(this.bTh+this.vTh*sin(this.life*this.cTh))*(band?1:.8),this.dW(this.x,this.y,this.thickness,this.angle,band),this.block=prng(1e4)<17&&this.cd<=0&&this.coolIn<=0&&this.angle==this.tAng,this.block){if(prng(5)){let w=R*prand(80,320),h=w*prand(6,14)/10;if(this.g.push(),this.g.translate(this.x+cos(this.angle)*w/2,this.y+sin(this.angle)*w/2),this.g.rotate(this.angle),prng(3)){this.g.noStroke(),this.g.fill(0,0,BLACK?100:10,6),this.g.rect(-w/2,-h/2,1.5*DH,h),this.rSh(-w/2,-h/2,w,h),this.recR(-w/2,-h/2,w,h);let ang=PI*prng(2);BGLW.walkers.push(new Walker((SI?.5*-LW.w:0)+this.x+cos(this.angle)*w*.5,this.y+sin(this.angle)*w*.5,this.angle+HALF_PI+ang,4,this.rot)),SI&&BGLW.walkers.push(new Walker(DW-(.5*-LW.w+this.x+cos(this.angle)*w*.5),this.y+sin(this.angle)*w*.5,-this.angle+HALF_PI+ang,4,this.rot))}else h=w*prand(3,7)/10,this.rSh(-w/2,-h/2,w,h),this.mR(-w/2,-h/2,w,h),this.rR(-w/2,-h/2,w,h,10);this.g.pop(),this.x+=cos(this.angle)*w,this.y+=sin(this.angle)*w}else{let d=R*prand(120,410),r=d/2,cx=this.x+cos(this.angle)*r,cy=this.y+sin(this.angle)*r;if(LW.walkers.length<10&&!prng(5)){let branches=2+prng(7),arc=TWO_PI,offs=PI,ang=arc/branches;if(this.alive=!1,prng(2)){for(let i=ang;i<arc;i+=ang){let xx=cx+(r+4)*cos(this.angle+i+offs),yy=cy+(r+4)*sin(this.angle+i+offs);var w=new NoiseWalker(this.g,xx,yy,this.angle+i+offs,this.frame,prng(100)+floor((this.lfs-this.life)/branches),!1,this.scale);LW.walkers.push(w)}this.cSh(cx,cy,r,90,0),this.cSh(cx,cy,r,20,0),this.dCR(cx,cy,d),fCircle(bg,cx,cy,1.2*d,6)}else{for(let i=.5;i<branches;i++){let xx=cx+1.2*(i-branches/2)*this.thickness*cos(this.angle+HALF_PI),yy=cy+1.2*(i-branches/2)*this.thickness*sin(this.angle+HALF_PI);var w;(w=new NoiseWalker(this.g,xx,yy,this.angle,this.frame,prng(100)+floor((this.lfs-this.life)/branches),!1,this.scale)).offset=this.offset,LW.walkers.push(w)}w=r;let h=1.6*this.thickness*branches;this.g.push(),this.g.translate(this.x+cos(this.angle)*w/2,this.y+sin(this.angle)*w/2),this.g.rotate(this.angle+PI),this.recR(-w/2,-h/2,w,h),this.g.pop()}}else this.g.push(),this.g.translate(cx,cy),this.g.rotate(this.angle),WHITE||(this.g.fill(this.randHue(),100,100,4),this.g.noStroke(),this.g.ellipse(0,0,400,400)),this.recR(-r,.3*-r,d,.3*d),this.g.pop(),this.cSh(cx,cy,.75*r),prng(2)?this.dCR(cx,cy,.75*d):(this.dC(cx,cy,.75*d),fan(this.g,cx,cy,.3*r,.3*r),this.dCR(cx,cy,.4*d)),this.x+=cos(this.angle)*d,this.y+=sin(this.angle)*d,fCircle(bg,cx,cy,d,4)}this.cHue(),this.rib=!prng(3),this.ribMod=prand(2,5),this.wires=[1,1,1,1,1,1,1,1,2,2,2,2,2,3,4,5][prng(16)]}}dEnd(){let w,h=100*R;this.g.push(),this.g.translate(this.x,this.y),this.g.rotate(this.angle),this.cSh(0,0,.5*h,50,0),this.dCR(0,0,h),this.g.pop(),fCircle(bg,this.x,this.y,2*h,prand(2,5))}out(){return this.x<this.frame.x||this.x>this.frame.x+this.frame.w||this.y<this.frame.y||this.y>this.frame.y+this.frame.h}gVG(){let x=floor(this.x-this.frame.x),y=floor(this.y-this.frame.y);return this.frame.vg[constrain(x,0,this.frame.w-1)][constrain(y,0,this.frame.h-1)]}cB(){this.g.strokeWeight(10);let out=this.out();this.vgiro=out?VGIRO2:this.gVG(),!this.block&&out?CUTCORNER?(this.dW(this.x,this.y,this.thickness,this.angle,!1),this.x<this.frame.x&&(this.x=this.frame.x+this.frame.w,this.y=this.frame.y+prng(this.frame.h)),this.x>this.frame.x+this.frame.w&&(this.x=this.frame.x,this.y=this.frame.y+prng(this.frame.h)),this.y<this.frame.y&&(this.y=this.frame.y+this.frame.h,this.x=this.frame.x+prng(this.frame.w)),this.y>this.frame.y+this.frame.h&&(this.y=this.frame.y,this.x=this.frame.x+prng(this.frame.w))):(this.tAng=this.x<this.frame.x?0:this.x>this.frame.x+this.frame.w?PI:this.y<this.frame.y?PI/2:1.5*PI,this.tAng+=prand(-5,5)/10,this.isOut=!0,this.coolIn=150*R*noise(.01*this.life)):(this.coolIn--,this.isOut=!1),CUTCORNER&&!this.block&&out&&this.dW(this.x-5*cos(this.angle),this.y-5*sin(this.angle),this.thickness,this.angle,!1)}cHue(){this.hue=prand(HUE,HUE+HUEVAR)%360}randHue(v=HUEVAR){return prand(HUE,HUE+v)%360}dW(x,y,t,a,band){let thick=t/this.wires+.98*this.wires,clamp=this.wires>1&&floor(this.life/10)%8==0;this.g.stroke(0,10);let w=round(this.wires*thick/2);this.g.strokeWeight(1.3);for(let i=0;i<=3.5*w;i+=2){this.g.stroke(0,0,0,map(i,0,3.5*w,100,5));let r=prand(-10,10)/10;this.g.point(x+r,y+i+r)}for(let i=-w;i<=w;i+=2){let bri=prand(-10,10)+(band&&!clamp?90:20)*abs(sin(map(i,-w,w,0,PI*(clamp?1:this.wires))));0==this.rib&&1==this.wires&&noise(.03*this.life)*thick<i+thick/3&&(bri*=prand(4,10)/10),this.g.strokeWeight(3.5),this.g.stroke(this.hue,this.sat,min(100,5+1.15*bri));let xx=x+cos(a+HALF_PI)*i,yy=y+sin(a+HALF_PI)*i;this.g.point(xx,yy),this.rust(this.g,xx,yy)}}rR(x,y,w,h,n=1){for(let i=0;i<n;i++){let yy=prng(h-40),ww=prand(40,w),hh=max(40,prand(40,h-yy-40));this.mR(x+w-ww,y+yy,ww,hh)}}recR(x,y,w,h){let s;if(min(w,h)>60*R){let r=20*R,opt;switch(prng(3)){case 0:this.recR(x,y,w,h/2),this.recR(x,y+h/2,w,h/2);break;case 1:this.recR(x,y,w/2,h),this.recR(x+w/2,y,w/2,h);break;case 2:this.mR(x,y,w,h),this.recR(x+r,y+r,w-2*r,h-2*r)}}else this.mR(x,y,w,h)}mR(x,y,w,h,b=-1){if(!WHITE){let up=1.5*max(w,h),stp=10;this.g.stroke(0),this.g.strokeWeight(1.5),this.g.fill(this.randHue(),70,100,1);for(let i=stp+floor(x)%stp;i<up;i+=stp)this.g.noStroke(),this.g.rect(x+i,y,w,h),this.g.stroke(0,0,0,map(i,0,up,40,0)),this.rL(x+i,y,w,h)}let xx=x,yy=y;this.cHue();let hue=this.hue,sat=this.bSat;prng(5)||(sat=WHITE?0:SAT),b=-1==b?4:b;let dia=sqrt(w*w+h*h);this.g.noStroke();let levels=100/6;for(let i=0;i<w;i+=2)for(let j=0;j<h;j+=2){let bri;bri=i<b||j<b||i>w-b||j>h-b?prand(5,20):prand(-10,10)+floor(max(0,map(i+j,0,dia,2.4,90/(100/6))))*(100/6),this.g.fill(hue,sat,bri),this.g.rect(xx+i,yy+j,2.5,2.5)}}rSh(x,y,w,h,sh=26,bri=0){for(let i=0;i<sh;i+=1)this.g.strokeWeight(1.5),this.g.stroke(0,0,bri,map(i,0,sh,70,0)),this.rL(x+i*cos(this.angle-HALF_PI),y-i*sin(this.angle-HALF_PI),w,h,1)}rL(x,y,w,h,r=1){for(let i=0;i<w;i+=3)this.rP(x+i,y,r),this.rP(x+i,y+h,r);for(let j=0;j<h;j+=3)this.rP(x,y+j,r),this.rP(x+w,y+j,r)}rP(x,y,r=1){let rx=prand(10*-r,10*r)/10,ry=prand(10*-r,10*r)/10;this.g.point(x+rx,y+ry)}dCR(x,y,s){s>80*R?(this.dC(x,y,s,40*R),this.dCR(x,y,s-40*R)):this.dC(x,y,s)}dC(x,y,s,ring=1e4){this.cHue(),this.g.strokeWeight(2);let up=prng(2),hue=this.hue,sat=this.bSat;prng(3)||(sat=WHITE?0:SAT);let levels=10,o=floor(-s)%8,m=prng(2)?1:-1;for(let i=-s/2;i<s/2;i+=2)for(let j=-s/2;j<s/2;j+=2){let d=s/2-dist(i,j,0,0);if(d>0&&d<ring){let bri=prand(-10,10)+floor(d<5*R?10:10*floor(map(j,-s/2,s/2,up?4:10,up?10:4)));floor(i+m*j+o)%8==0&&(bri=prng(bri)),this.g.stroke(hue,sat,bri,d<2?50:100),this.g.strokeWeight(3),this.g.point(x+i,y+j)}}this.g.strokeWeight(6*R),this.g.stroke(0,0,5),this.g.noFill(),this.g.ellipse(x,y,s,s)}cSh(x,y,r,s=40,bri=0){let sh=s;for(let i=0;i<sh;i+=3){let stp=.7/(r+i);this.g.strokeWeight(1.5),this.g.stroke(0,0,bri,50*pow(map(i,0,sh,1,0),2));for(let a=0;a<=TWO_PI;a+=stp){let xx=x+(r+i)*cos(a),yy=y+(r+i)*sin(a),rr=prand(-10,10)/5;this.g.point(xx+rr,yy+rr)}}}rust(g,xx,yy){let a=max(0,map(noise(.001*xx,.001*yy),0,1,0,70*AGE));g.strokeWeight(.5*prand(1,6)),g.stroke(30,WHITE?0:40,prand(10,70),a);let r=30*R,rx=prand(-r,r),ry=prand(-r,r);g.point(xx+rx,yy+ry)}}