0x21713dfb…d9f2sent to0x99a9b7c1…b069·#16,468,698·view on Etherscan
function setup(){DIM=Math.min(WIDTH,HEIGHT),createCanvas(WIDTH,HEIGHT,WEBGL),noiseSeed(seed),M=DIM/1e3,V=R.random_int(0,90),comp=R.random_num(0,1),orig=R.random_num(0,1),rectMode(CENTER);let t=R.random_int(0,9);V<20&&(age=R.random_int(2,5),sf=R.random_int(15,40),bs=R.random_int(15,40),cpr=R.random_int(35,500),spr=25,apr=R.random_int(35,100),av=2,cv=.1,sv=.1,mf=.2),V>=20&&V<30&&(age=R.random_int(1,2),sf=R.random_int(20,100),bs=R.random_int(15,20),cpr=25,spr=25,apr=30,av=R.random_num(0,1),cv=.1,sv=.1,mf=.2),V>=30&&V<40&&(age=R.random_int(1,2),sf=R.random_int(20,80),bs=R.random_int(25,80),cpr=0,spr=0,apr=0,av=.1,cv=.1,sv=.4,mf=.2),V>=40&&V<60&&(age=R.random_int(2,3),sf=R.random_int(20,100),bs=R.random_int(25,40),cpr=24,spr=25,apr=R.random_int(10,400),av=.1,cv=.1,sv=.1,mf=.2),V>=60&&V<=70&&(age=R.random_int(1,3),sf=R.random_int(20,80),bs=R.random_int(15,100),cpr=90,spr=25,apr=50,av=.1,cv=.8,sv=.1,mf=.2),V>=70&&V<80&&(age=R.random_int(1,2),sf=R.random_int(20,40),bs=R.random_int(15,20),cpr=2,spr=100,apr=100,av=.1,cv=.1,sv=.8,mf=.2),V>=80&&V<=90&&(age=R.random_int(1,2),sf=R.random_int(20,50),bs=R.random_int(15,100),cpr=1e3,spr=0,apr=10,av=.1,cv=.1,sv=10,mf=.2);for(let t=0;t<=sf;t++)rans[t]=t%2==0?R.random_int(1,bs):R.random_int(10,bs);for(let t=0;t<sf;t++){let i=rans[t];flock.push(new Boid(i,mx,my))}0==t?whichClr=clr0:1==t?whichClr=clr1:2==t?whichClr=clr2:3==t?whichClr=clr3:4==t?whichClr=clr4:5==t?whichClr=clr5:6==t?whichClr=clr6:7==t?whichClr=clr7:8==t?whichClr=clr8:9==t?whichClr=clr9:10==t?whichClr=clr10:11==t?whichClr=clr11:12==t&&(whichClr=clr12),setColorTables(),console.log("V ",V),console.log("Age ",age);let i=clrA[0];background(i)}function draw(){if(ambientLight(100),directionalLight(255,255,255,0,0,2*-DIM*M),smooth(),scale(.8),comp>.8&&V>=20&&V<40)for(let t of flock)t.edgesC(flock),t.flock(flock),t.update(),t.show(flock);else for(let t of flock)t.edges(),t.flock(flock),t.update(),t.show(flock);if(frameCount>=380*age){if(mouseIsPressed)for(let t of kflock)t.edges(),t.flock(kflock),t.update(),t.showK(kflock);print("done")}}function keyPressed(){55===keyCode&&saveCanvas(c,"myCanvas","jpg")}function setColorTables(){clrLen=whichClr.length,clr1Blk=floor(clr1Num/clrLen);for(let t=0;t<clr1Num;++t){t%clr1Blk==0&&(clr1Cnt=(clr1Cnt+1)%clrLen);let i=color(whichClr[clr1Cnt][0],whichClr[clr1Cnt][1],whichClr[clr1Cnt][2]),o=color(whichClr[(clr1Cnt+1)%clrLen][0],whichClr[(clr1Cnt+1)%clrLen][1],whichClr[(clr1Cnt+1)%clrLen][2]);clrA.push(lerpColor(i,o,map(t,clr1Cnt*clr1Blk,(clr1Cnt+1)*clr1Blk,0,1)))}}function keyPressed(){keyCode===DOWN_ARROW&&frameCount>380*age&&(fill(clrA[0]),rect(0,0,2*WIDTH,2*HEIGHT))}function mousePressed(){let t=R.random_int(1,10);for(let i=0;i<=t;i++)rans[i]=i%2==0?R.random_int(1,bs):R.random_int(10,bs);for(let i=0;i<t;i++)br=rans[i],kflock.push(new KBoid(br,screenX-width/2,screenY-height/2))}let hash=tokenData.hash,seed=parseInt(tokenData.hash.slice(0,16),16);class Random{constructor(){this.useA=!1;let t=function(t){let i=parseInt(t.substr(0,8,16)),o=parseInt(t.substr(8,8,16)),s=parseInt(t.substr(16,8,16)),e=parseInt(t.substr(24,8,16));return function(){i|=0,o|=0,s|=0,e|=0;let t=(i+o|0)+e|0;return e=e+1|0,i=o^o>>>9,o=s+(s<<3)|0,s=s<<21|s>>>11,s=s+t|0,(t>>>0)/4294967296}};this.prngA=new t(tokenData.hash.substr(2,32)),this.prngB=new t(tokenData.hash.substr(34,32));for(let t=0;t<1e6;t+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(t,i){return t+(i-t)*this.random_dec()}random_int(t,i){return Math.floor(this.random_num(t,i+1))}random_bool(t){return this.random_dec()<t}random_choice(t){return t[this.random_int(0,t.length-1)]}}let R=new Random(seed),rans=[];var res=360;let mX,mY,ry,rx,rz,sf,atp,rr,mx,my,dk,karma,bcol,stp=1,f=0,rd=200,n=0;const flock=[];let alignSlider,cohesionSlider,separationSlider,clrLen,whichClr,clr1Blk,whichColor,kflock=[],clr0=[[225,77,42],[253,132,31],[62,109,156],[0,18,83]],clr1=[[0,0,0],[207,10,10],[220,95,0],[238,238,238]],clr2=[[255,247,233],[255,115,29],[95,157,247],[23,70,162]],clr3=[[0,0,0],[255,255,255]],clr4=[[49,225,247],[64,13,81],[216,0,166],[255,119,119]],clr5=[[239,239,239],[210,0,26],[255,222,0],[255,250,231]],clr6=[[252,226,219],[255,143,177],[178,112,162],[122,68,149]],clr7=[[245,237,220],[207,210,207],[162,181,187],[235,29,54]],clr8=[[245,245,245],[240,84,84],[48,71,94],[18,18,18]],clr9=[[255,255,255],[0,0,0]],clr1Num=200,clr1Cnt=-1,clrA=[];var DEFAULT_SIZE=1e3,HEIGHT=window.innerHeight,WIDTH=.707*HEIGHT,DIM=Math.min(WIDTH,HEIGHT),M=DIM/DEFAULT_SIZE;let c,V,age;class Boid{constructor(t,i,o){orig>.9&&V<40&&V>=20?this.position=createVector():this.position=createVector(map(R.random_num(0,1),0,1,-WIDTH/2,WIDTH/2),map(R.random_num(0,1),0,1,-HEIGHT/2,HEIGHT/2)),1==dk&&(this.position=createVector(i,o)),this.velocity=createVector();let s=R.random_num(0,1)*TWO_PI,e=1;this.cf=R.random_int(0,199),this.ff=R.random_int(1,50),this.velocity.x=e*Math.cos(s),this.velocity.y=e*Math.sin(s),this.velocity.z=e*Math.sin(s),this.velocity.setMag(R.random_num(2,4)*M),this.acceleration=createVector(),this.maxForce=mf*M,this.maxSpeed=5*M,this.size=t*M}edges(){this.position.x>WIDTH/2?this.position.x=-WIDTH/2:this.position.x<-WIDTH/2&&(this.position.x=WIDTH/2),this.position.y>HEIGHT/2?this.position.y=-HEIGHT/2:this.position.y<-HEIGHT/2&&(this.position.y=HEIGHT/2)}edgesC(t){for(let i of t){let t=dist(this.position.x,this.position.y,0,0);t>500*M&&this.position.limit(500*M)}}align(t){let i=apr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.velocity),s++)}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}separation(t){let i=spr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);if(e!=this&&t<i&&t>0){let i=p5.Vector.sub(this.position,e.position);i.div(t*t),o.add(i),s++}}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}cohesion(t){let i=cpr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.position),s++)}return s>0&&(o.div(s),o.sub(this.position),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}flock(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t);i.mult(av),o.mult(cv),s.mult(sv),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s)}flockK(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t);i.mult(av),o.mult(cv),s.mult(sv),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s)}update(){this.position.add(this.velocity),this.velocity.add(this.acceleration),this.velocity.limit(this.maxSpeed),this.acceleration.mult(0)}show(t){let i=map(frameCount,0,380*age,0,PI),o=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),s=frameCount;apr;if(s<380*age){let e=createVector();e=this.position;for(let o of t){let t=dist(this.position.x,this.position.y,o.position.x,o.position.y);o!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+s/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(i)),line(e.x,e.y,o.position.x,o.position.y),e.dot(o.position))}push(),noStroke(),fill(clrA[floor((int(o)+s/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(s/120),rotateY(s/120),rotateZ(s/120),box(sin(i)*this.size),pop()}}showK(t){let i=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),o=frameCount%(380*age),s=map(frameCount,0,380*age,0,PI),e=(apr,createVector());e=this.position;for(let i of t){let t=dist(this.position.x,this.position.y,i.position.x,i.position.y);i!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+o/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(s)),line(e.x,e.y,i.position.x,i.position.y),e.dot(i.position))}push(),noStroke(),fill(clrA[floor((int(i)+o/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(o/120),rotateY(o/120),rotateZ(o/120),box(sin(s)*this.size),pop()}}class KBoid{constructor(t,i,o){this.position=createVector(map(R.random_num(0,1),0,1,-WIDTH/2,WIDTH/2),map(R.random_num(0,1),0,1,-HEIGHT/2,HEIGHT/2)),console.log(this.position),this.velocity=createVector();let s=R.random_num(0,1)*TWO_PI,e=1;this.cf=R.random_int(0,199),this.ff=R.random_int(1,50),this.velocity.x=e*Math.cos(s),this.velocity.y=e*Math.sin(s),this.velocity.z=e*Math.sin(s),this.velocity.setMag(R.random_num(2,4)*M),this.acceleration=createVector(),this.maxForce=mf*M,this.maxSpeed=5*M,this.size=t*M}edges(){this.position.x>WIDTH/2?this.position.x=-WIDTH/2:this.position.x<-WIDTH/2&&(this.position.x=WIDTH/2),this.position.y>HEIGHT/2?this.position.y=-HEIGHT/2:this.position.y<-HEIGHT/2&&(this.position.y=HEIGHT/2)}edgesC(t){for(let i of t){let t=dist(this.position.x,this.position.y,0,0);t>500*M&&this.position.limit(500*M)}}align(t){let i=apr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.velocity),s++)}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}separation(t){let i=spr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);if(e!=this&&t<i&&t>0){let i=p5.Vector.sub(this.position,e.position);i.div(t*t),o.add(i),s++}}return s>0&&(o.div(s),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}cohesion(t){let i=cpr*M,o=createVector(),s=0;for(let e of t){let t=dist(this.position.x,this.position.y,e.position.x,e.position.y);e!=this&&t<i&&(o.add(e.position),s++)}return s>0&&(o.div(s),o.sub(this.position),o.setMag(this.maxSpeed),o.sub(this.velocity),o.limit(this.maxForce)),o}attract(t,i,o){let s=createVector();var e=createVector(i,o);let r=0;for(let i of t){let t=p5.Vector.sub(e,this.position);i!=this&&(s.add(t),r++)}return r>0&&(s.div(r),s.setMag(this.maxSpeed),s.sub(this.velocity),s.limit(this.maxForce)),s}flock(t){let i=this.align(t),o=this.cohesion(t),s=this.separation(t),e=this.attract(t,mouseX-width/2,mouseY-height/2);i.mult(av),o.mult(cv),s.mult(sv),e.mult(1),this.acceleration.add(i),this.acceleration.add(o),this.acceleration.add(s),this.acceleration.add(e)}update(){this.position.add(this.velocity),this.velocity.add(this.acceleration),this.velocity.limit(this.maxSpeed),this.acceleration.mult(0)}show(t){let i=map(frameCount,0,380*age,0,PI),o=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),s=frameCount;apr;if(s<380*age){let e=createVector();e=this.position;for(let o of t){let t=dist(this.position.x,this.position.y,o.position.x,o.position.y);o!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+s/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(i)),line(e.x,e.y,o.position.x,o.position.y),e.dot(o.position))}push(),noStroke(),fill(clrA[floor((int(o)+s/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(s/120),rotateY(s/120),rotateZ(s/120),box(sin(i)*this.size),pop()}}showK(t){let i=map(this.position.x,-WIDTH/2,WIDTH/2,0,199),o=frameCount%(380*age),s=map(frameCount,0,380*age,0,PI),e=(apr,createVector());e=this.position;for(let i of t){let t=dist(this.position.x,this.position.y,i.position.x,i.position.y);i!=this&&t<200*M&&t>10*M&&(stroke(clrA[floor((this.cf+o/this.ff)%clrA.length)]),strokeWeight(.01*this.size*M*sin(s)),line(e.x,e.y,i.position.x,i.position.y),e.dot(i.position))}push(),noStroke(),fill(clrA[floor((int(i)+o/this.ff)%clrA.length)]),translate(this.position.x,this.position.y),rotateX(o/120),rotateY(o/120),rotateZ(o/120),box(sin(s)*this.size),pop()}}