memoscan
← all memos

Memo 0x4c336e29…c5e494 on Ethereum

[1,()=>{console.log("Artist 21. Leonardo Solaas -- platform 1");function Q(a){return random(a)}function Q(a,b){return random(a,b)}var sk=[],pt=[],hb=[];const cF=[["752822","E84922","FFCD36","FFFFBA"],["F7E9CC","A64B46","520E05","230C00"],["99090F","CC1635","F98583","FFDEAA"],["BD8495","E1B1B9","DCCFD8","F2F0F1"],["D66F06","EE9306","FFB21E","FFE669"],["9869B7","A7A2FE","CAC7FE","EAE5F9"],["42202E","8E4651","EDD10E","FFFF84"],["A3032F","F7AC05","F2E1E1","DE8CE1"],["300614","973D70","F2D2FB","F1F3F2"],["AFBC86","F9FCF3","D0CBD1","7A3A44"],["191409","494955","7C8099","422C47"]];const cG=["3A3732","6C7836","B4B82D","F4F58F"],cY=["864606","FBE14C"];function bd(c,p,a){if(p.x<0||p.x>skw||p.y<0||p.y>skh){let pr=Q(120);return{x:c.cx+pr*cos(a),y:c.cy+pr*sin(a)}}return p}pt.push(c=>{let nm=120,sd=Q(16),a=c.ang,r=50,w=30,p={x:-99,y:0};for(let i=0;i<nm;i++){let isd=Q(16);a+=Q(-1,1);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let va=Q(-.006,.006),lf=Q(120,240),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"vec",md:{src:"t",pw:.7,mn:1,mx:0},dr:dr,va:va},{ty:"zf",md:.7,dr:a,vv:Q(2),sc:.01,am:PI,dp:.45}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:6,P:{rf:"dad"},A:64,C:{src:"t",cv:"z",vv:sd+i*.3,vt:2,cn:1.5,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"t",cv:"peak",lc:.8,pw:.5,cy:1,mn:0,mx:{src:"nrm",mn:-12,mx:12}},dr:{src:"t",cv:"z",vv:Q(9),vt:2,cn:1.6,mn:a-PI,mx:a+PI},vr:1,rf:"dad"}],K:[{D:{ty:"bh",vp:.2,delay:3},L:lf,P:{rf:"dad"},A:{src:"d-nrm",cv:"sin",pw:.8,mn:96,mx:8},G:{cv:"z",vv:{src:"d-nrm",mn:isd,mx:isd+2},vt:3,cn:1.5,mn:.1,mx:3},C:{cv:"z",vv:{src:"d-nrm",mn:isd,mx:isd+3},vt:2,cn:1.5,mx:.3,cs:c.cs},F:[{ty:"fix",f:.1,gp:0,dr:0,vr:1,rf:"dad"},{ty:"brown",md:.8,ch:2,am:PI}]}]}]};sk.push(st)}});hb.push(c=>{let nm=100,sd=Q(16),a=c.ang,r=50,w=30,p={x:-99,y:0};for(let i=0;i<nm;i++){a+=Q(-1,1);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let lf=Q(60,120),dr=a+1;let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"z",md:1,dr:dr,vv:sd+i*.2,vt:.012,cn:1,am:PI*.7}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:3,P:{rf:"dad"},C:{src:"t",cv:"z",vv:sd+i*.06,vt:1,cn:1.5,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"nrm",mn:-3,mx:3},dr:{src:"dang",mn:PI*.5,mx:PI*2.5},vr:{src:"t",pw:2,mn:1,mx:.3},rf:"dad"}],K:[{D:{ty:"bh",vg:.4,vp:.6},L:{src:"gen",mn:16,mx:24},P:{rf:"dad"},W:lf,G:{src:"t",cv:"bump",lc:.6,sp:.8,mn:1,mx:4},C:{src:"t",cv:"z",vv:Q(9),vi:.1,vt:1,cn:1.6,cs:readHex(cY)},F:[{ty:"z",md:1,dr:dr,vv:Q(9),vt:.03,am:PI}]}]}]};sk.push(st)}});hb.push(c=>{let nm=100,sd=Q(16),a=c.ang,r=50,w=20,p={x:-99,y:0};for(let i=0;i<nm;i++){a+=Q(-PI*.5,PI*.5);p.x+=r*cos(a);p.y+=r*sin(a);if(p.x<0||p.x>skw||p.y<0||p.y>skh){let pr=Q(120);p={x:c.cx+pr*cos(a),y:c.cy+pr*sin(a)}}let lf=Q(60,120),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"zc",md:1,dr:dr,vv:sd+i*.3,vt:.012,am:PI*.12,dp:.85}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:3,P:{rf:"dad"},A:{src:"rnd",mn:24,mx:96},C:{src:"t",cv:"z",vv:sd+i*.08,vi:.1,vt:1,cn:1.5,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"nrm",mn:-3,mx:3},dr:{src:"dang",mn:PI*.5,mx:PI*2.5},vr:{src:"t",pw:2,mn:1,mx:.3},rf:"dad"}]},{D:{ty:"bh",vg:.2,vp:.2},L:{src:"rnd",mn:10,mx:15},N:lf*.4,P:{rf:"dad"},W:{src:"rnd",pw:.2,mn:lf/3,mx:lf},A:{src:"rnd",mn:24,mx:96},G:{src:"t",mn:2,mx:0},C:{src:"rnd",cs:readHex(cY)},F:[{ty:"z",md:1,dr:{src:"rnd",mn:dr-PI*.2,mx:dr+PI*.2},vv:Q(9),vi:.1,vt:.04,am:PI*.8}]}]};sk.push(st)}});pt.push(c=>{let nm=120,sd=Q(16),a=c.ang,r=50,w=30,p={x:-99,y:0};for(let i=0;i<nm;i++){let gn=contrast(noise(sd,i*.1),1.6);a+=Q(-1,1);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let lf=lerp(60,120,gn),gh=lerp(12,24,gn),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"z",md:1,dr:dr,vv:Q(16),vt:.01,cn:1,am:PI*.5}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:8,P:{rf:"dad"},C:{src:"t",pw:{src:"rnd",mn:.5,mx:2},mn:.5,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"t",cv:"sin",pw:.3,cy:1,mn:2,mx:{src:"nrm",mn:-gh/2,mx:gh/2}},dr:{src:"t",cv:"z",vv:Q(16),vt:1,cn:1.5,mn:dr-PI,mx:dr+PI},vr:1,rf:"dad"}]}]};sk.push(st)}});pt.push(c=>{let nm=80,sd=Q(16),a=c.ang,r,w=30,p={x:-99,y:0};for(let i=0;i<nm;i++){let isd=Q(16);let gn=contrast(noise(sd,i*.05),1.6);a+=Q(-1,1);r=lerp(30,90,gn);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let lf=lerp(60,240,gn),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"z",md:1,dr:dr,vv:sd+i*.2,vt:.01,cn:1,am:PI*.8}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:14,P:{rf:"dad"},A:48,C:{src:"t",cv:"z",vv:sd+i*.15,vi:.03,vt:1,cn:1.6,cs:c.cs},F:[{ty:"zf",md:.5,dr:dr,vv:{src:"nrm",mn:isd,mx:isd+2},sc:.01,am:PI*.2,dp:.85},{ty:"pull",f:.02,sk:0,rf:"dad"}],K:[{D:{ty:"bh",vp:.2,delay:3},L:lf,P:{rf:"dad"},A:{src:"d-nrm",cv:"sin",pw:.6,mn:64,mx:0},G:{cv:"z",vv:{src:"d-nrm",mn:isd,mx:isd+2},vt:3,cn:1.5,mn:.1,mx:3},C:{cv:"z",vv:{src:"d-nrm",mn:isd,mx:isd+3},vt:2,cn:1.5,mx:.3,cs:c.cs},F:[{ty:"fix",f:.1,gp:0,dr:0,vr:1,rf:"dad"},{ty:"brown",md:.8,ch:2,am:PI}]}]}]};sk.push(st)}});pt.push(c=>{let nm=100,sd=Q(16),a=c.ang,r,w=20,p={x:-99,y:0};for(let i=0;i<nm;i++){let gn=contrast(noise(sd,i*.06),1.6);a+=Q(-1,1);r=lerp(20,80,gn);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let va=Q(-.024,.024),va2=Q(-.06,.06),lf=lerp(60,240,gn),dr=a;let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"vec",md:.7,dr:dr,va:{src:"t",pw:3,mn:va,mx:va2}},{ty:"z",md:.3,dr:dr,vv:Q(16),vt:.01,am:PI*.5}],K:[{D:{ty:"nt",vg:.2,vp:.2},L:lf,N:6,P:{rf:"dad"},C:{src:"t",pw:{src:"gen",mn:.5,mx:5},cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"t",cv:"sin",pw:.5,cy:.75,mn:0,mx:{src:"nrm",mn:-10,mx:10}},dr:{src:"t",cv:"z",vv:Q(16),vt:2,cn:1.6,mn:dr-PI,mx:dr+PI},vr:1,rf:"dad"}]}]};sk.push(st)}});pt.push(c=>{let nm=72,sd=Q(16),a=c.ang,r,a2=PI*.24,p={x:-99,y:0};for(let i=0;i<nm;i++){let gn=contrast(noise(sd,i*.1),1.6);a+=Q(-1,1);r=lerp(30,60,gn);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let va=Q(-.02,.02),va2=Q(-.05,.05),lf=lerp(50,160,gn),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x,y:p.y},W:c.st+i*5,F:[{ty:"vec",md:.8,dr:dr,va:{src:"t",pw:2,mn:va,mx:va2}},{ty:"z",md:.4,dr:dr,vv:Q(16),vt:.02,am:PI*.5}],K:[{D:{ty:"nt",vg:.2,vp:.4},L:lf*.18,N:lf*.2,P:{rf:"dad"},W:{src:"nrm",mn:0,mx:lf},C:{src:"t",cv:"z",vv:sd+i*.1,vi:.02,vt:1,cn:1.5,cs:c.cs},F:[{ty:"z",md:{src:"nrm",cv:"sin",pw:.5,mn:.1,mx:.8},dr:dr+a2,vv:0,vi:.04,vt:.05,am:PI},{ty:"vec",md:{src:"nrm",cv:"sin",pw:.5,mn:.1,mx:.8},dr:dr+a2,va:0}]}]};st.K.push(JSON.parse(JSON.stringify(st.K[0])));st.K[1].F.forEach(e=>e.dr=dr-a2);sk.push(st)}});hb.push(c=>{let nm=180,sd=Q(16),a=c.ang,r,w=20,p={x:-99,y:0};for(let i=0;i<nm;i++){let gn=contrast(noise(sd,i*.1),1.6);a+=Q(-1,1);r=lerp(15,50,gn);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let lf=lerp(60,160,gn),dr=a+Q(-1,1);let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"z",md:1,dr:dr,vv:sd+i*.05,vt:.01,am:PI}],K:[{D:{ty:"nt",vg:.2,vp:.4},L:lf,N:3,P:{rf:"dad"},G:1,C:{src:"t",cv:"z",vv:sd+i*.1,vi:.1,vt:1,cn:1.7,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"nrm",mn:-2,mx:2},dr:{src:"dang",mn:PI*.5,mx:PI*2.5},vr:{src:"t",pw:2,mn:1,mx:0},rf:"dad"}]}]};sk.push(st)}});hb.push(c=>{let nm=60,sd=Q(16),a=c.ang,r,w=20,p={x:-99,y:0};for(let i=0;i<nm;i++){let gn=contrast(noise(sd,i*.1),1.6);a+=Q(-1,1);r=lerp(30,120,gn);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let lf=lerp(120,480,gn),dr=a;let st={L:lf,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,F:[{ty:"z",md:1,dr:dr,vv:sd+i*.06,vt:.006,am:PI*.8}],K:[{D:{ty:"nt",vg:.2,vp:.4},L:lf,N:4,P:{rf:"dad"},G:1,C:{src:"t",cv:"z",vv:sd+i*.1,vi:.1,vt:1,cn:1.7,cs:c.cs},F:[{ty:"fix",f:.2,gp:{src:"nrm",mn:-3,mx:3},dr:{src:"dang",mn:PI*.5,mx:PI*2.5},vr:{src:"t",pw:2,mn:1,mx:0},rf:"dad"}]}]};sk.push(st)}});hb.push(c=>{let nm=220,sd=Q(16),a=c.ang,r,w=30,p={x:-99,y:0};for(let i=0;i<nm;i++){a+=Q(-1,1);r=Q(20,50);p.x+=r*cos(a);p.y+=r*sin(a);if(p.x<0||p.x>skw||p.y<0||p.y>skh){let pr=Q(120);p={x:c.cx+pr*cos(a),y:c.cy+pr*sin(a)}}let dr=a+Q(-1,1);let st={D:{ty:"bh",vg:.2,vp:.2},L:int(Q(60,120)),P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*5,G:{src:"t",pw:1.6,mn:2.5,mx:0},C:{src:"t",cv:"z",vv:sd+i*.1,vt:1,cn:1.7,cs:c.cs},damp:.2,F:[{ty:"zc",md:1,dr:dr,vv:sd+i*.1,vt:.02,am:PI*.2,dp:.85}]};sk.push(st)}});var pn=c=>{let nm=320,sd=Q(16),a=c.ang,r,w=50,p={x:-99,y:0};for(let i=0;i<nm;i++){a+=Q(-PI*.4,PI*.4);r=Q(10,40);p.x+=r*cos(a);p.y+=r*sin(a);p=bd(c,p,a);let dr=Q(PI*2),q=int(rnd2(1,6));let st={D:{ty:"bh",vg:.2,vp:.2},L:{src:"rnd",mn:8,mx:24},N:q,P:{x:p.x+Q(-w,w),y:p.y+Q(-w,w)},W:c.st+i*2,G:{src:"t",pw:1.6,mn:2,mx:0},C:{src:"t",cv:"z",vv:sd+i*.06,vi:.1,vt:1,cn:1.7,cs:c.cs},F:[{ty:"z",md:1,dr:{src:"rnd",mn:dr-PI*.2,mx:dr+PI*.2},vv:Q(16),vi:1,vt:.02,am:PI*.5}]};sk.push(st)}};var canvas,sc,seed,t=0,go=true,tickers=new Set,dots=[],back=[42,40,51],skw=900,skh=1600;setup=()=>{view=createCanvas(int(windowHeight/16*9),windowHeight);sc=ceil(height/1600);seed=R.random_int(0,99999999);reset()};function reset(){randomSeed(seed);noiseSeed(seed);canvas=createGraphics(900*sc,1600*sc);canvas.background(back[0],back[1],back[2]);sk=[];dots=[];tickers.clear();t=0;go=true;let c1=int(Q(cF.length));let c2;do{c2=int(Q(cF.length))}while(c2==c1);pick(hb)({cx:Q(200,700),cy:Q(200,1400),ang:Q(PI*2),st:0,cs:readHex(cG)});pick(pt)({cx:skw*.5,cy:skh*.25,ang:PI*.35,st:300,cs:readHex(cF[c1])});pick(pt)({cx:skw*.5,cy:skh*.75,ang:-PI*.65,st:600,cs:readHex(cF[c2])});pn({cx:Q(200,700),cy:Q(200,1400),ang:Q(PI*2),st:900,cs:readHex(cY)});for(let st of sk)makeDots(st)}function makeDots(g){let d;g.N=g.N||1;if("every"in g)g.N=int(g.dad.L/g.every);for(let i=0;i<g.N;i++){g.nrm=g.N==1?0:constrain(i/(g.N-1),0,.9999);g.prev=i>0?d:null;g.dix=i;d=new Dot(g);if("K"in g){for(let ch of g.K){ch.dad=d;makeDots(ch)}}}}draw=()=>{if(go){let cnv=canvas;let _sc=2/1e3;if(t<200){cnv.noStroke();for(let i=0;i<500;i++){let _x=Q(900),_y=Q(1600);let sz=Q(3,6);let al=pow(noise(_x*_sc,_y*_sc),1.6);cnv.fill(255,al*32);cnv.ellipse(_x*sc,_y*sc,sz*sc,sz/3*sc);cnv.fill(0,al*16);cnv.ellipse((_x-sz*.3)*sc,(_y-sz*.5)*sc,sz*sc,sz/3*sc)}}for(let tkr of tickers){tkr.tick()}image(canvas,0,0,width,height);if(tickers.size==0){console.log("finished");go=false}t++}};class Dot{constructor(c){this.tweens=new Set;this.ix=dots.length;dots.push(this);this.dix=c.dix;this.nrm=c.nrm;this.gen=Q(1);this.dad="dad"in c?c.dad:null;this.prev="prev"in c?c.prev:null;this.forcesData="F"in c?c.F:[];if("D"in c){this.D={ty:"line",delay:0,...c.D};for(let p in this.D)this.read(this.D,p,this.D[p],0)}else{this.D={ty:"none",delay:0}}if(this.D.delay>0)this.history=[];this.layer="layer"in c?c.layer:0;let o={};if("P"in c){this.read(o,"x",c.P.x,0);this.read(o,"y",c.P.y,0);this.P=createVector(o.x,o.y);if("rf"in c.P)this.posRef=c.P.rf}else{this.P=createVector(Q(skw),Q(skh))}this.p1=createVector(this.P.x,this.P.y);this.p2=createVector(this.P.x,this.P.y);this.vel=createVector(0,0);this.dst=createVector(0,0);this.read(this,"damp",c.damp,.2);this.read(this,"limit",c.limit,10);this.forces=[];this.readCol(c.C);this.read(this,"A",c.A,96);this.read(this,"G",c.G,2);this.mT=0;this.read(this,"L",c.L,100);this.read(this,"W",c.W,0);if(this.dad!=null)this.W+=this.dad.W;this.created;this.history=[];this.init()}init(){this.created=t;this.action=this.hold;tickers.add(this)}read(obj,prop,s,df){if(s===undefined||s===null)s=df;if(!isNaN(Number(s))){obj[prop]=Number(s);return}if(typeof s==="string"||Array.isArray(s)||"data"in s){obj[prop]=s;return}s={src:"t",cv:"pow",cy:1,pw:1,mn:0,mx:1,ph:0,cn:1,v:.5,vv:0,vi:0,vt:0,lc:.5,sp:1,...s};for(let p in s)if(typeof s[p]=="object")this.read(s,p,s[p],0);s.obj=obj;s.prop=prop;if(["t","ang","dang"].includes(s.src)){this.tweens.add(s);return}if(s.src=="rnd"){obj[prop]=this.calcCrv(s,Q(1));return}if(s.src.startsWith("d-")){let p=s.src.substring(2);if(p=="ang")obj[prop]=this.dad.vel.heading()+s.ph;else obj[prop]=this.calcCrv(s,this.dad[p]);return}obj[prop]=this.calcCrv(s,this[s.src])}readCol(s){if(s===undefined||s===null){this.col=[0,0,0];return}if(Array.isArray(s)){this.col=s;return}s={src:"t",cv:"pow",cy:1,pw:1,mn:0,mx:1,ph:0,cn:1,v:.5,vv:0,vi:0,vt:0,lc:.5,sp:1,...s};for(let p in s)if(typeof s[p]=="object")this.read(s,p,s[p],0);s.obj=this;s.prop="col";if(s.src=="t"||s.src=="ang"||s.src=="vel"){this.tweens.add(s);return}if(s.src=="rnd"){this.col=gradient(s.cs,this.calcCrv(s,Q(1)));return}this.col=gradient(s.cs,this.calcCrv(s,this[s.src]))}translate(x,y){this.P.add(x,y);this.p1.set(this.P);this.p2.set(this.P)}addForce(f){f={f:.05,md:0,dr:0,ch:1,sk:0,gp:10,fq:10,ph:0,va:0,vr:1,vv:0,vi:0,vt:0,am:0,dp:0,_a:0,...f};for(let p in f)if(typeof f[p]=="object"&&"src"in f[p])this.read(f,p,f[p],0);this.forces.push(f)}tick(){this.action()}hold(){if(this.W>0&&t-this.created<this.W)return;if("posRef"in this){if(this.posRef=="dad"){this.translate(this.dad.P.x,this.dad.P.y)}}this.activated=t;this.mT=0;this.action=this.update;for(let f of this.forcesData){if("rf"in f){if(f.rf=="dad")this.addForce({o:this.dad,...f})}else{this.addForce(f)}delete this.forcesData}}update(){this.p2.set(this.p1);for(let tw of this.tweens)this.tween(tw);for(let f of this.forces)this.applyForce(f);this.vel.limit(this.limit);this.P.add(this.vel);this.vel.mult(this.damp);let cnv=canvas;if(this.D.delay>0){this.history.push(this.P.copy());if(this.history.length<this.D.delay){return}else{this.p1=this.history.shift()}}else{this.p1=this.P}if(this.D.ty=="nt"){this.history.push([this.p1.x,this.p1.y]);if(this.prev!=null){let ds=this.p1.dist(this.prev.p1);cnv.fill(this.col[0],this.col[1],this.col[2],this.A);cnv.noStroke();for(let j=0;j<ds;j++){let _x=lerp(this.prev.history[this.mT][0],this.p1.x,j/ds);let _y=lerp(this.prev.history[this.mT][1],this.p1.y,j/ds);if("vp"in this.D){_x+=this.G*Q(-this.D.vp,this.D.vp);_y+=this.G*Q(-this.D.vp,this.D.vp)}let gh=this.G+("vg"in this.D?this.G*Q(-this.D.vg,this.D.vg):0);cnv.circle(_x*sc,_y*sc,gh*sc)}}}else if(this.D.ty=="bh"){let ds=this.p1.dist(this.p2);cnv.fill(this.col[0],this.col[1],this.col[2],this.A);cnv.noStroke();for(let j=0;j<ds;j++){let _x=lerp(this.p2.x,this.p1.x,j/ds);let _y=lerp(this.p2.y,this.p1.y,j/ds);if("vp"in this.D){_x+=this.G*Q(-this.D.vp,this.D.vp);_y+=this.G*Q(-this.D.vp,this.D.vp)}let gh=this.G+("vg"in this.D?this.G*Q(-this.D.vg,this.D.vg):0);cnv.circle(_x*sc,_y*sc,gh*sc)}}this.mT++;if(this.mT>this.L)tickers.delete(this)}applyForce(f){if(f.ty=="fix"){let ox=f.o.P.x+f.gp*f.vr*cos(f.dr),oy=f.o.P.y+f.gp*f.vr*sin(f.dr);this.dst.set(ox-this.P.x,oy-this.P.y);this.dst.mult(f.f);this.vel.add(this.dst)}else if(f.ty=="pull"){this.dst.set(f.o.P.x-this.P.x,f.o.P.y-this.P.y);if(f.sk!=0)this.dst.rotate(f.sk);this.dst.mult(f.f);this.vel.add(this.dst)}else if(f.ty=="vec"){this.vel.add(f.md*cos(f.dr),f.md*sin(f.dr));f.dr+=f.va}else if(f.ty=="brown"){if(f.ch==1||int(Q(f.ch))==0){let a=this.vel.heading()+Q(-1,1)*f.am;this.vel.add(f.md*cos(a),f.md*sin(a))}}else if(f.ty=="z"){let a=f.dr+(noise(f.vv,this.dix*f.vi,this.mT*f.vt)*2-1)*f.am;this.vel.add(f.md*cos(a),f.md*sin(a))}else if(f.ty=="zc"){f._a=f._a*f.dp+(noise(f.vv,this.dix*f.vi,this.mT*f.vt)*2-1)*f.am;this.vel.add(f.md*cos(f.dr+f._a),f.md*sin(f.dr+f._a))}else if(f.ty=="zf"){f._a=f._a*f.dp+(noise(f.vv,this.P.x*f.sc,this.P.y*f.sc)*2-1)*f.am;this.vel.add(f.md*cos(f.dr+f._a),f.md*sin(f.dr+f._a))}}tween(tw){let v;if(tw.src=="t")v=this.mT/(this.L+1);else if(tw.src=="ang")v=(this.vel.heading()+PI)/TWO_PI;else if(tw.src=="dang")v=(this.dad.vel.heading()+PI)/TWO_PI;if(tw.prop=="col")this.col=gradient(tw.cs,this.calcCrv(tw,v));else tw.obj[tw.prop]=this.calcCrv(tw,v)}calcCrv(c,v){let o=0;if(c.cv=="pow"){v=fract(v*c.cy);o=c.pw<0?1-pow(1-v,abs(c.pw)):pow(v,c.pw)}else if(c.cv=="sin"){o=pow(sin(v*TWO_PI*c.cy+(c.ph-.25)*TWO_PI)*.5+.5,c.pw)}else if(c.cv=="peak"){v=fract(v*c.cy);if(v<c.lc)o=pow(v/c.lc,c.pw);else o=pow(map(v,c.lc,1,1,0),c.pw)}else if(c.cv=="bump"){v=fract(v*c.cy);if(v>c.lc-c.sp/2&&v<c.lc+c.sp/2){o=sin(map(v,c.lc-c.sp/2,c.lc+c.sp/2,0,PI))}}else if(c.cv=="z"){o=contrast(noise(c.vv,this.dix*c.vi,v*c.vt),c.cn)}return c.mn+o*(c.mx-c.mn)}}function readHex(cs){let o=[];for(let i=0;i<cs.length;i++){let c=color("#"+cs[i]);o.push([red(c),green(c),blue(c)])}return o}function gradient(cs,v){v=constrain(v,0,.999);let n=floor(v*(cs.length-1));v=fract(v*(cs.length-1));return[cs[n][0]*(1-v)+cs[n+1][0]*v,cs[n][1]*(1-v)+cs[n+1][1]*v,cs[n][2]*(1-v)+cs[n+1][2]*v]}function rnd2(a,b){return a+Q(1)*Q(1)*(b-a)}function contrast(n,f){return constrain(f*(n-.5)+.5,0,1)}function pick(arr){return arr[int(Q(arr.length))]}keyTyped=()=>{if(key===" "){go=!go}else if(key==="r"){reset()}else if(key==="f"){let fs=fullscreen();fullscreen(!fs)}else if(key==="s"){saveCanvas(canvas,"Smash and Scatter","jpg")}};windowResized=()=>{view=createCanvas(int(windowHeight/16*9),windowHeight);sc=ceil(height/1600);reset()}; }],