0x9d8b93b9…e1easent to0xa7d8d9ef…d270·#13,483,983·view on Etherscan
var unit;p5.disableFriendlyErrors=!0,S=Uint32Array.from([0,1,s=t=2,3].map(e=>parseInt(tokenData.hash.substr(8*e+2,8),16))),R=(e=>(t=S[3],S[3]=S[2],S[2]=S[1],S[1]=s=S[0],t^=t<<11,S[0]^=t^t>>>8^s>>>19,S[0]/2**32));var pts=[],neighbors=[],density=.5,iter=0,p=[],resolution=100,flow_squares=[],grid_size=8,gen_pts=[],wrong_color_p=.5,vars=["x","y","z"],funcs=["($+$)","($-$)","(-1*$)","sin($)","sqabs($)","($*$)","cos($)"],bi=R()<.07,p_num;p_num=R()<.02?6:Math.floor(6*R()),flow_r=R(),flow_r<.94?flow_type="b":flow_r<.95?flow_type="ro":flow_r<.96?flow_type="ri":flow_r<.97?flow_type="ib":flow_r<.98?flow_type="lr":flow_type="rb";var max_size=.25;"b"==flow_type?(min_thresh=.3,max_thresh=.5,high_max_size=.275,low_max_size=.03,shape_scale=6):(min_thresh=.55,max_thresh=.7,high_max_size=.45,low_max_size=.15,shape_scale=8),"ro"==flow_type?rad_scale=2:"ri"==flow_type?rad_scale=-2:rad_scale=0;var rad_angle=0,unit;"b"==flow_type?(low_density=.3,high_density=2.5):["ri","ro"].includes(flow_type)?(low_density=.8,high_density=3):(low_density=.7,high_density=5);var x_pts=[],y_pts=[],z_pts=[],c_pts=[],p_var_inc=.3,num_trails=50,trail_length=5,margin=0;function setup(){unit=min(windowWidth,windowHeight),createCanvas(unit,unit),noiseSeed(floor(1e9*R())),strokeWeight(unit/800),0==p_num?(p=["#0b2f4d","#617613","#fea321","#f74d40","#a6184a","#4f269c"],ps=color(0),pb="#f3e0cc"):1==p_num?(p=["#05091e","#0b2f4d","#3fcfc5","#AFE9C4","#f74d40","#f3e0cc","#F7A8AB"],br=floor(R()*p.length),ps="#ffffff",pb=p[br],p.splice(br,1)):2==p_num?(p=["#2D244F","#502E50","#733750","#AD4E4C","#ff6731","#05091e"],ps="#FEFB75",br=floor(R()*p.length),pb=p[br],p.splice(br,1)):3==p_num?(p=["#2e0e31","#a6184a","#ff6731","#F7A8AB","#617613","#0f3f0f"],ps=color(0),br=floor(R()*p.length),pb=p[br],p.splice(br,1)):4==p_num?(p=["#C3D34C","#AFE9C4","#f3e0cc","#855F55","#78777C","#4C6178"],ps="#ffffff",br=floor(R()*p.length),pb=p[br],p.splice(br,1)):5==p_num?(p=["#f7c483","#855F55","#CE611F","#f3e0cc","#EDEDE9","#FFFFFF","#FFFFFF"],ps="#3C0707",br=floor(R()*(p.length-1)),print(br),pb=p[br],p.splice(br,1),5==br&&p.splice(5,1)):6==p_num&&(p[0]=color(0),p[1]="#ffffff",b_colors=["#0b2f4d","#a6184a","#AFE9C4","#f74d40"],br=floor(R()*b_colors.length),pb=color(b_colors[br]),2==br?ps=color(0):ps="#ffffff"),background(color(pb)),f_string2=genExpression(),f_string3=genExpression(),f_string4=genExpression(),f_string=genExpression();for(let e=0;e<num_trails;e++)x_pts[e]=[R()-.5],y_pts[e]=[R()-.5],z_pts[e]=[R()-.5],c_pts[e]=[];p=shuf(p);for(let i=0;i<x_pts.length;i++)for(let j=0;j<trail_length;j++)x=x_pts[i][j],y=y_pts[i][j],z=z_pts[i][j],nx=eval(f_string),ny=eval(f_string2),nz=eval(f_string3),nc=eval(f_string4),x_pts[i][j+1]=nx,y_pts[i][j+1]=ny,z_pts[i][j+1]=nz,c_pts[i][j]=nc;for(let e=0;e<x_pts.length;e++)x_pts[e].splice(0,1),y_pts[e].splice(0,1),z_pts[e].splice(0,1);for(min_x=min(x_pts.map(min)),max_x=max(x_pts.map(max)),min_x==max_x&&(min_x-=1,max_x+=1),min_y=min(y_pts.map(min)),max_y=max(y_pts.map(max)),min_y==max_y&&(min_y-=1,max_y+=1),min_z=min(z_pts.map(min)),max_z=max(z_pts.map(max)),min_z==max_z&&(min_z-=1,max_z+=1),low_scale_factor=.2,high_scale_factor=5,scale_iter=0,scale_done=!1;scale_iter<20&&!scale_done;){scale_factor=sqrt(low_scale_factor*high_scale_factor),gen_pts=[];for(let e=0;e<x_pts.length;e++)for(let t=0;t<x_pts[0].length;t++)x=map(x_pts[e][t],min_x,max_x,margin,1-margin),y=map(y_pts[e][t],min_y,max_y,margin,1-margin),z=map(z_pts[e][t],min_z,max_z,.03,.2)*scale_factor,c=c_pts[e][t],gen_pts.push([x,y,z,c]);in_count=0;for(let e=0;e<1;e+=.1)for(let t=0;t<1;t+=.1){let n=0;for(gen_count=0;gen_count<5&&n<gen_pts.length;){let s=sqrt(sq(e-gen_pts[n][0])+sq(t-gen_pts[n][1]));s<gen_pts[n][2]&&gen_count++,n++}5==gen_count&&in_count++}scale_iter++,in_count/121<min_thresh?low_scale_factor=scale_factor:in_count/121>max_thresh?high_scale_factor=scale_factor:scale_done=!0}gen_pts.sort((e,t)=>e[3]-t[3]);for(let e=0;e<gen_pts.length;e++)gen_pts[e][3]=floor(e*p.length/gen_pts.length);gen_pts=shuf(gen_pts);for(let e=0;e<1e4;e++){x=map(R(),0,1,0,1),y=map(R(),0,1,0,1),c=0;let e=0;for(gen_count=0,gen_max_size=0,gen_density_frac=0;gen_count<5&&e<gen_pts.length;){let t=sqrt(sq(x-gen_pts[e][0])+sq(y-gen_pts[e][1]));t<gen_pts[e][2]&&(gen_count++,gen_pts[e][2]-t>gen_max_size&&(gen_max_size=(gen_pts[e][2]-t)*shape_scale),(gen_pts[e][2]-t)/gen_pts[e][2]>gen_density_frac&&(gen_density_frac=(gen_pts[e][2]-t)/gen_pts[e][2],c=gen_pts[e][3])),e++}5==gen_count?(density=map(gen_density_frac,0,1,1,high_density),max_size=min([high_max_size,gen_max_size])):(density=low_density,max_size=low_max_size,c=-1);let t=max_size*R()+.001;for(is_valid=!0,e=0;is_valid&&e<pts.length;){let n=sqrt(sq(x-pts[e][0])+sq(y-pts[e][1]));-1==pts[e][3]?n<(t+pts[e][2])/density/2&&(is_valid=!1):n<(t+pts[e][2])/max(density,.45)/2&&(is_valid=!1),e++}is_valid&&pts.push([x,y,t,c])}if(pts.sort((e,t)=>t[2]-e[2]),"ib"==flow_type){rand_int=[];for(let e=0;e<grid_size;e++)rand_int[e]=floor(4*R())}for(let e=0;e<grid_size;e++){flow_squares[e]=[];for(let t=0;t<grid_size;t++)"rb"==flow_type?(theta=R()*TWO_PI,flow_squares[e][t]=[cos(theta),sin(theta)]):"lr"==flow_type?R()<.5?flow_squares[e][t]=[1,0]:flow_squares[e][t]=[-1,0]:"ib"==flow_type?(n=rand_int[t],n%4==0?flow_squares[e][t]=[1,0]:n%4==1?flow_squares[e][t]=[0,1]:n%4==2?flow_squares[e][t]=[-1,0]:flow_squares[e][t]=[0,-1]):flow_squares[e][t]=[0,0]}}function genExpression(){let e="$";for(p_var=0;e.includes("$");)R()<p_var?(v=vars[floor(vars.length*R())],e=e.replace("$",v)):(f=funcs[floor(funcs.length*R())],e=e.replace("$",f)),p_var+=p_var_inc;return e}function len(e,t,n,s){return sqrt(sq(n-e)+sq(s-t))}function shuf(e){let t=[],n=[];for(let n=0;n<e.length;n++)t[n]=[R(),e[n]];t.sort((e,t)=>e[0]-t[0]);for(let s=0;s<e.length;s++)n[s]=t[s][1];return n}function sqabs(e){return Math.sign(e)*sqrt(abs(e))}function drawBlob(e){beginShape();for(let t=0;t<e.length;t++)vertex(e[t][0]*unit,e[t][1]*unit);vertex(e[0][0]*unit,e[0][1]*unit),endShape()}function drawStripes(e){for(let e=0;e<floor(outline.length/2);e+=2)beginShape(),vertex(outline[e][0]*unit,outline[e][1]*unit),vertex(outline[e+1][0]*unit,outline[e+1][1]*unit),vertex(outline[outline.length-2-e][0]*unit,outline[outline.length-2-e][1]*unit),vertex(outline[outline.length-1-e][0]*unit,outline[outline.length-1-e][1]*unit),vertex(outline[e][0]*unit,outline[e][1]*unit),endShape()}function draw(){R()<.8?(c=pts[iter][3],c<0?c=floor(p.length*R()):R()<wrong_color_p&&(c=(c+floor((p.length-1)*R())+1)%p.length),noStroke(),fill(p[c])):(stroke(ps),noFill()),outline=[],draw_b=!0,R()<.75?res=resolution:(res=100,draw_b=!1),line_iters=[];for(let e=0;e<res;e++){for(theta=map(e,0,res,0,TWO_PI),x=pts[iter][0],y=pts[iter][1],xs=pts[iter][0],ys=pts[iter][1],total_dist=0,line_iter=0,max_dist=pts[iter][2]*(bi?.9*pow(cos(theta),4)+.1:1);total_dist<max_dist&&line_iter<1e3;)noisex=noise(5*x,5*y,0),noisey=noise(5*x,5*y,10),noisedx=noise(3*(x+.001),3*(y+.001),0),noisedy=noise(3*(x+.001),3*(y+.001),10),gradx=noise(3*(noisex+.001),3*(noisey+.001),20)-noise(3*noisex,3*noisey,20),grady=noise(3*(noisex+.001),3*(noisey+.001),30)-noise(3*noisex,3*noisey,30),rx=.01*(x-.5),ry=.01*(y-.5),dis=len(x,y,.5,.5),dis>0&&("spiral_out"==flow_type||"spiral_in"==flow_type)&&(rx/=dis,ry/=dis),x_index=(floor(x*grid_size)+grid_size)%grid_size,y_index=(floor(y*grid_size)+grid_size)%grid_size,grid_flow=flow_squares[x_index][y_index],nx=x+.1*(gradx*cos(theta)+grady*sin(theta)+.4*rad_scale*(rx*cos(rad_angle)+ry*sin(rad_angle))+.0035*grid_flow[0]),ny=y+.1*(gradx*sin(theta)-grady*cos(theta)+.4*rad_scale*(ry*cos(rad_angle)-rx*sin(rad_angle))+.0035*grid_flow[1]),total_dist+=len(x,y,nx,ny),line_iter++,x=nx,y=ny;line_iters.push(line_iter),outline.push([x,y])}draw_b?drawBlob(outline):drawStripes(outline),++iter>=pts.length&&noLoop()}