memoscan
← all memos

Memo 0xfca792d6…d40f98 on Ethereum

p5.disableFriendlyErrors=!0;class Random{constructor(){this.useA=!1;let t=function(t){let e=parseInt(t.substr(0,8),16),s=parseInt(t.substr(8,8),16),r=parseInt(t.substr(16,8),16),i=parseInt(t.substr(24,8),16);return function(){let t=((e|=0)+(s|=0)|0)+(i|=0)|0;return i=i+1|0,e=s^s>>>9,s=(r|=0)+(r<<3)|0,r=(r=r<<21|r>>>11)+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()}rd(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}}R=new Random;var grid_size=200,threshold=.5,sq_size,grid=[],saved_grids=[],saved_grids_yz=[],saved_noise=[],saved_pts=[],mean_grid=[],mean_size=1,diff_threshold=3e4,p_var_inc=.2,trail_length=4,gen_size=20,margin=.05,good_thresh=.22,side_thresh=.08,perspective_thresh=0,num_layers=27,gen_shape,layer_type;shape_rand=R.rd(),gen_shape=shape_rand<.24?"cloud":shape_rand<.48?"cylinder":shape_rand<.72?"sphere":shape_rand<.8?"cube":shape_rand<.84?"urchin":shape_rand<.92?"rings":"spiral","urchin"==gen_shape&&(side_thresh=.05);var layer_rand=R.rd(),change_var;layer_type=layer_rand<.88?"layered":layer_rand<.96?"inscribed":"circumscribed",change_rand=R.rd(),change_var=change_rand<.4?"z":change_rand<.7?"x":"y";var draw_mode=0,vars=["x","y","z"],funcs=["($+$)","($-$)","(-1*$)","sin($)","sqabs($)","($*$)","cos($)","(1.5*$)"],saved_functions=[],p=[],colorHues=[],colorSats=[],colorLights=[],init_pts=[],total_attempts=0,attempt_nums=[],mouse_flags=[!1,!1,!1],trip_iters=[27,27,27];function setup(){unit=min(floor(windowWidth/3),windowHeight),pixelDensity()<2&&pixelDensity(2),sq_size=unit/grid_size,canv=createCanvas(3*unit,unit),noStroke(),strokeWeight(unit/600),frameRate(60),colorMode(HSL),baseHue=360*R.rd(),colorHue=R.rd()+0,colorSat=R.rd(),colorLight=R.rd();for(let t=0;t<num_layers;t++)colorHues.push(colorHue),colorSats.push(colorSat),colorLights.push(colorLight),colorHue=(colorHue+.5*(R.rd()-R.rd())+1)%1,colorSat+=.3*(R.rd()-R.rd()),colorLight+=.3*(R.rd()-R.rd());min_sat=min(colorSats),max_sat=max(colorSats),min_light=min(colorLights),max_light=max(colorLights);for(let t=0;t<colorSats.length;t++)colorSats[t]=map(colorSats[t],min_sat,max_sat,0,1),colorLights[t]=map(colorLights[t],min_light,max_light,0,1),R.rd()<.2&&(R.rd()<.9&&(colorHues[t]=(colorHues[t]+.5)%1),R.rd()<.9&&(colorSats[t]=1-colorSats[t]),R.rd()<.9&&(colorLights[t]=1-colorLights[t]));background(0),genInitPoints(),trip_iter=0;for(let t=0;t<3;t++){saved_noise[t]=[];for(let e=0;e<grid_size+1;e++){saved_noise[t][e]=[];for(let s=0;s<grid_size+1;s++)saved_noise[t][e][s]=.1*R.rd()}}}function genInitPoints(){if("cloud"==gen_shape)for(let t=0;t<pow(gen_size,3);t++)x=sqabs(2*(R.rd()-.5)),y=sqabs(2*(R.rd()-.5)),z=sqabs(2*(R.rd()-.5)),init_pts.push([x,y,z]);if("cylinder"==gen_shape)for(let t=0;t<pow(gen_size,3);t++)theta=map(R.rd(),0,1,0,TWO_PI),rad=.5,x=rad*cos(theta),y=rad*sin(theta),z=R.rd()-.5,init_pts.push([x,y,z]);if("sphere"==gen_shape)for(let t=0;t<pow(gen_size,3);t++)theta=TWO_PI*R.rd(),phi=acos(1-2*R.rd()),rad=.5,x=rad*sin(phi)*cos(theta),y=rad*sin(phi)*sin(theta),z=rad*cos(phi),init_pts.push([x,y,z]);if("cube"==gen_shape)for(let t=0;t<gen_size;t++)for(let e=0;e<gen_size;e++)for(let s=0;s<gen_size;s++)x=map(t,0,gen_size-1,-1,1)+1/gen_size*(R.rd()-R.rd()),y=map(e,0,gen_size-1,-1,1)+1/gen_size*(R.rd()-R.rd()),z=map(s,0,gen_size-1,-1,1)+1/gen_size*(R.rd()-R.rd()),init_pts.push([x,y,z]);if("urchin"==gen_shape)for(let t=0;t<pow(gen_size,1.5);t++){theta=TWO_PI*R.rd(),phi=acos(1-2*R.rd()),x=0*sin(phi)*cos(theta),y=0*sin(phi)*sin(theta),z=0*cos(phi);for(let t=0;t<pow(gen_size,1.5);t++)twist=TWO_PI*R.rd(),theta+=.1*cos(twist),phi+=.1*sin(twist),v=.01,x+=v*sin(phi)*cos(theta),y+=v*sin(phi)*sin(theta),z+=v*cos(phi),init_pts.push([x,y,z])}if("rings"==gen_shape){theta=TWO_PI*R.rd(),phi=acos(1-2*R.rd());for(let t=0;t<gen_size;t++){twist=TWO_PI*R.rd(),theta+=.1*cos(twist),phi+=.1*sin(twist),rad=map(t,-1,gen_size-1,0,1);for(let t=0;t<sq(gen_size);t++)psi=map(t,0,sq(gen_size),0,TWO_PI),x=rad*cos(phi)*cos(psi)*cos(theta)+sin(psi)*sin(theta),y=rad*sin(phi)*cos(psi),z=rad*sin(psi)*cos(theta)+cos(phi)*cos(psi)*sin(theta),init_pts.push([x,y,z])}}if("spiral"==gen_shape)for(let t=0;t<pow(gen_size,3);t++)theta=map(R.rd(),0,1,0,10*PI),rad=theta/(10*PI),z=R.rd()-.5,x=rad*cos(theta+TWO_PI*z),y=rad*sin(theta+TWO_PI*z),init_pts.push([x,y,z])}function genExpression(){let t="$";for(p_var=0;t.includes("$");)R.rd()<p_var?(v=vars[floor(vars.length*R.rd())],t=t.replace("$",v)):(f=funcs[floor(funcs.length*R.rd())],t=t.replace("$",f)),p_var+=p_var_inc;return t}function updateExpressions(t,e){"x"==t?f_string=genExpression():"y"==t?f_string2=genExpression():"z"==t?f_string3=genExpression():(f_string=genExpression(),f_string2=genExpression(),f_string3=genExpression()),saved_functions.push([f_string,f_string2,f_string3]),e||(attempt_nums[trip_iter]=total_attempts),total_attempts++}function mapPts(){let out_pts=[];for(let i=0;i<init_pts.length;i++){x=init_pts[i][0],y=init_pts[i][1],z=init_pts[i][2];for(let j=0;j<trail_length;j++)nx=eval(f_string),ny=eval(f_string2),nz=eval(f_string3),x=nx,y=ny,z=nz,out_pts.push([x,y,z])}x_min=out_pts[0][0],x_max=out_pts[0][0],y_min=out_pts[0][1],y_max=out_pts[0][1],z_min=out_pts[0][2],z_max=out_pts[0][2];for(let t=1;t<out_pts.length;t++)out_pts[t][0]<x_min&&(x_min=out_pts[t][0]),out_pts[t][0]>x_max&&(x_max=out_pts[t][0]),out_pts[t][1]<y_min&&(y_min=out_pts[t][1]),out_pts[t][1]>y_max&&(y_max=out_pts[t][1]),out_pts[t][2]<z_min&&(z_min=out_pts[t][2]),out_pts[t][2]>z_max&&(z_max=out_pts[t][2]);x_min==x_max&&(x_min-=1,x_max+=1),y_min==y_max&&(y_min-=1,y_max+=1),z_min==z_max&&(z_min-=1,z_max+=1);for(let t=0;t<out_pts.length;t++)x=out_pts[t][0],y=out_pts[t][1],z=out_pts[t][2],nx=map(x,x_min,x_max,margin,1-margin),ny=map(y,y_min,y_max,margin,1-margin),nz=map(z,z_min,z_max,margin,1-margin),out_pts[t]=[nx,ny,nz,t];return out_pts.sort((t,e)=>t[2]-e[2]),out_pts}function checkPts(t){let e=[],s=[],r=[];for(let t=0;t<grid_size+1;t++){e[t]=[],s[t]=[],r[t]=[];for(let i=0;i<grid_size+1;i++)e[t][i]=0,s[t][i]=0,r[t][i]=0}count_xy=0,count_yz=0,count_zx=0,left_count=0,right_count=0,top_count=0,bottom_count=0;for(let i=0;i<t.length;i++)x=floor(t[i][0]*(grid_size+1)),y=floor(t[i][1]*(grid_size+1)),z=floor(t[i][2]*(grid_size+1)),0==e[x][y]&&(count_xy++,x<=grid_size/2&&left_count++,x>=grid_size/2&&right_count++,y<=grid_size/2&&top_count++,y>=grid_size/2&&bottom_count++),0==s[y][z]&&count_yz++,0==r[z][x]&&count_zx++,e[x][y]++,s[y][z]++,r[z][x]++;diff_grid=!0;for(let r=0;r<trip_iter;r++){total_diff=0,total_diff_yz=0,hamming_dist=0;for(let t=0;t<grid_size+1;t++)for(let i=0;i<grid_size+1;i++)total_diff+=abs(saved_grids[r][t][i]-e[t][i]),total_diff_yz+=abs(saved_grids_yz[r][t][i]-s[t][i]);for(let e=0;e<t.length;e++)hamming_dist+=abs(saved_pts[r][e][2]-t[e][2]);total_diff<diff_threshold&&hamming_dist<3200&&(diff_grid=!1)}return!!(count_xy>good_thresh*sq(grid_size)&&count_yz>perspective_thresh*sq(grid_size)&&count_zx>perspective_thresh*sq(grid_size)&&left_count>side_thresh*sq(grid_size)&&right_count>side_thresh*sq(grid_size)&&top_count>side_thresh*sq(grid_size)&&bottom_count>side_thresh*sq(grid_size)&&diff_grid&&t[0][2]!=t[t.length-1][2])&&(saved_grids[trip_iter]=e,saved_grids_yz[trip_iter]=s,!0)}function updateGrid(t){grid=[];for(let t=0;t<grid_size+1;t++){grid[t]=[];for(let e=0;e<grid_size+1;e++)grid[t][e]=0}for(let e=0;e<t.length;e++)x=floor(t[e][0]*(grid_size+1)),y=floor(t[e][1]*(grid_size+1)),grid[x][y]++}function sqabs(t){return Math.sign(t)*sqrt(abs(t))}function len(t,e,s,r){return sqrt(sq(s-t)+sq(r-e))}function outlineSquare(t,e,s){tlv=grid[t][e],trv=grid[t+1][e],blv=grid[t][e+1],brv=grid[t+1][e+1],tl=tlv>threshold,tr=trv>threshold,bl=blv>threshold,br=brv>threshold,t_offset=(threshold-tlv)/(trv-tlv),b_offset=(threshold-blv)/(brv-blv),l_offset=(threshold-tlv)/(blv-tlv),r_offset=(threshold-trv)/(brv-trv),march_case=tl+2*tr+4*bl+8*br;let r=-1,i=-1,n=-1,o=-1,_=-1,a=-1,d=-1,l=-1;switch(march_case){case 0:break;case 1:r=t+t_offset,i=e,n=t,o=e+l_offset;break;case 2:r=t+t_offset,i=e,n=t+1,o=e+r_offset;break;case 3:r=t+1,i=e+r_offset,n=t,o=e+l_offset;break;case 4:r=t,i=e+l_offset,n=t+b_offset,o=e+1;break;case 5:r=t+t_offset,i=e,n=t+b_offset,o=e+1;break;case 6:r=t+t_offset,i=e,n=t+1,o=e+r_offset,_=t,a=e+l_offset,d=t+b_offset,l=e+1;break;case 7:r=t+1,i=e+r_offset,n=t+b_offset,o=e+1;break;case 8:r=t+b_offset,i=e+1,n=t+1,o=e+r_offset;break;case 9:r=t+t_offset,i=e,n=t,o=e+l_offset,_=t+b_offset,a=e+1,d=t+1,l=e+r_offset;break;case 10:r=t+t_offset,i=e,n=t+b_offset,o=e+1;break;case 11:r=t+b_offset,i=e+1,n=t,o=e+l_offset;break;case 12:r=t+1,i=e+r_offset,n=t,o=e+l_offset;break;case 13:r=t+t_offset,i=e,n=t+1,o=e+r_offset;break;case 14:r=t+t_offset,i=e,n=t,o=e+l_offset}r>-1&&line(r*sq_size+s*unit,i*sq_size,n*sq_size+s*unit,o*sq_size),_>-1&&line(_*sq_size+s*unit,a*sq_size,d*sq_size+s*unit,l*sq_size)}function drawLayer(t,e){noFill(),h=colorHues[t],s=colorSats[t],l=colorLights[t],stroke(360*h,map(s,0,1,35,95),map(l,0,1,35,65));for(let t=0;t<grid_size+1;t++){grid[t]=[],mean_grid[t]=[];for(let e=0;e<grid_size+1;e++)grid[t][e]=0,mean_grid[t][e]=0}start2=0,end2=0,"layered"==layer_type&&(start=floor(map(t,0,num_layers-1,0,pts.length/2)),end=map(t,0,num_layers-1,pts.length/2,pts.length)),"inscribed"==layer_type&&(start=floor(map(t,0,num_layers-1,0,.46*pts.length)),end=map(t,0,num_layers-1,pts.length,.54*pts.length)),"circumscribed"==layer_type&&(start=floor(map(t,0,num_layers-1,0,pts.length*((num_layers-1)/num_layers))),end=min(start+pts.length/2,pts.length),start+pts.length/2>pts.length?(start2=0,end2=start-pts.length/2):(start2=0,end2=0));for(let t=start;t<end;t++)x=floor(pts[t][0]*(grid_size+1)),y=floor(pts[t][1]*(grid_size+1)),z=floor(pts[t][2]*(grid_size+1)),grid[x][y]+=1;for(let t=start2;t<end2;t++)x=floor(pts[t][0]*(grid_size+1)),y=floor(pts[t][1]*(grid_size+1)),z=floor(pts[t][2]*(grid_size+1)),grid[x][y]+=1;for(let t=0;t<5;t++){for(let t=0;t<grid.length;t++)for(let e=0;e<grid[0].length;e++){count=0;for(let s=-mean_size;s<=mean_size;s++)for(let r=-mean_size;r<=mean_size;r++)t+s>=0&&t+s<grid.length&&e+r>=0&&e+r<grid[0].length&&(mean_grid[t][e]+=grid[t+s][e+r]),count++;mean_grid[t][e]=mean_grid[t][e]/count}for(let t=0;t<grid.length;t++)for(let e=0;e<grid[0].length;e++)grid[t][e]=mean_grid[t][e]}for(let t=0;t<grid.length;t++)for(let s=0;s<grid[0].length;s++)grid[t][s]+=saved_noise[e][t][s];threshold=map(t,0,num_layers-1,.25,.75);for(let t=0;t<grid_size;t++)for(let s=0;s<grid_size;s++)outlineSquare(t,s,e)}function mousePressed(){mouseButton==LEFT&&(mouse_index=floor(mouseX/unit),mouseY/unit<=1&&mouseY/unit>=0&&(mouse_flags[mouse_index]=!0))}function keyPressed(){3==draw_mode&&(83==keyCode&&save("primordial"+tokenData.tokenId.toString()+".png"),49==keyCode&&(img=createGraphics(unit,unit),img.pixelDensity(pixelDensity),img.copy(canv,0,0,unit,unit,0,0,unit,unit),img.save("primordial"+tokenData.tokenId.toString()+"_1.png")),50==keyCode&&(img=createGraphics(unit,unit),img.pixelDensity(pixelDensity),img.copy(canv,unit,0,unit,unit,0,0,unit,unit),img.save("primordial"+tokenData.tokenId.toString()+"_2.png")),51==keyCode&&(img=createGraphics(unit,unit),img.pixelDensity(pixelDensity),img.copy(canv,2*unit,0,unit,unit,0,0,unit,unit),img.save("primordial"+tokenData.tokenId.toString()+"_3.png")))}function draw(){if(noStroke(),fill(color(0,0,0,5)),0==draw_mode&&(0==trip_iter?updateExpressions("b",!1):updateExpressions(change_var,!1),pts=mapPts(),saved_pts[trip_iter]=pts,updateGrid(pts),draw_mode++,t2=0),1==draw_mode&&(drawLayer(t2,trip_iter),t2++,t2==num_layers&&(draw_mode=2,t3=0)),2==draw_mode&&(t3+=1,t3==num_layers))if(checkPts(pts))if(trip_iter++,3==trip_iter){draw_mode=3;for(let t=0;t<10;t++)updateExpressions(change_var,!0)}else draw_mode=0;else fill(0),noStroke(),square(trip_iter*unit,0,unit),draw_mode=0;if(3==draw_mode)for(let t=0;t<3;t++)mouse_flags[t]&&(mouse_flags[t]=!1,trip_iters[t]=0,attempt_nums[t]=(attempt_nums[t]+total_attempts-1)%total_attempts,attempt_functions=saved_functions[attempt_nums[t]],f_string=attempt_functions[0],f_string2=attempt_functions[1],f_string3=attempt_functions[2],saved_pts[t]=mapPts(),fill(0),noStroke(),square(t*unit,0,unit)),trip_iters[t]<num_layers&&(pts=saved_pts[t],drawLayer(trip_iters[t],t),trip_iters[t]++)}