memoscan
← all memos

Memo 0xe4e49ef2…463c4f on Ethereum

<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"/> <title>Astratta | Jos Vromans</title> <meta name=viewport content="width=device-width,shrink-to-fit=0,user-scalable=no,minimum-scale=1,maximum-scale=1"> <style>body{width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; flex-direction: row; margin: 0}canvas{margin: auto; display: block; box-shadow: 0 2px 12px -2px rgba(0, 0, 0, .15)}</style> </head> <body> <canvas id="main"></canvas> <script type="text/javascript">// License: CC BY-NC 4.0 www.josvromans.comC=document.getElementById('main');S=parseInt("{{hash}}".slice(0,16),16);E=()=>{S^=S<<13;S^=S>>17;S^=S<<5;return((S<0?~S+1:S)%999)/999;}rb=(a,b)=>a+(b-a)*E();K=(a,b)=>Math.floor(rb(a,b+1));O=(x)=>x[Math.floor(rb(0,x.length*0.99))];W=window;A=W.requestAnimationFrame;g=(i,a,b)=>{let l=[];for(j=0;j<i;j++){let m=[];for(n=0;n<3;n++){m.push(a[n]-((a[n]-b[n])/i)*j)}l.push('rgb('+m.join(',')+')');}return l;}q=(cs,ci)=>{let l=[];for(let j=0;j<cs.length;j++){l=l.concat(g(ci,cs[j],cs[(j+1)%cs.length]))}return l;}nu=[0,0,0];B="#000";V="#fff";P=[ [[B,B,B,B,"#d13366","#f7980c","#3f3ddc","#03b1c5","#91ce33","#8e485b","#17bb76","#3a0a24","#927a0f","#349bec"],[0,0,0,0,0,1,2]], [['#99cccc','#ccffff','#ccffcc','#ccccff','#9999cc','#99cccc','#ccffff','#ccffcc','#ccccff','#9999cc','blue',B,B,B,B,B,B,B,'orange'],[0,0,0,0,0,1,1,1,2]], [[B,B,B,B,"#3ffeec","#0e84a4","#97a5e7","#a25b35","#5d9c6a","#d5e81a","#8c5df5","#ea9cd1","#8b3226","#d27405"],[0,0,0,0,0,1,1,2,2,2,3]], [['#ffe686','#d90000','#c42b00','#a43300','#7c2600',B,B,B,V],[0,0,0,0,1,1,2]], [[B,B,B,B,"#344a82","#9eebce","#0d42d9","#185aa9","#1f1da8","#786586","#37ccb3","#4bc497","#9b5d31","#2b70ab"],[0,0,0,0,0,1,1,2]], [['#c21','#fff','#f80','#026',B,'#888',B,'#a22',B,'#aa0','#00c'],[0,0,1]], [q([[180,0,0],[211,211,250],nu],50).concat(B,B,B,B,B),[0,0,0,1,3]], [q([[255,0,0],nu,[200,200,0],[0,0,160],nu,[255,255,255],[255,155,0]],4),[0,0,0,1,1,2]], [['#334',V,'#222','#abc',B],[0,0,0,0,0,0,0,0,1]], [q([[255,80,120],[240,255,170],nu],4),[0,0,0,0,0,0,0,1,2,3]], [['#eff673','#f57b7b','#a7f687','#f6bd74','#6dbaf5','#008',B],[0]], [['#e7c7db','#8f5b7d','#b34b77','#d88b5e','#e2a68b', '#004'],[0]], [['#253736','#f29952','#609c8b','#f5dd91','#f5e7cb','#547d86','#711'],[0]], [['#d5cdbc','#c2b1a0','#ecbe4e','#eba84a','#d49040','#8b583d','#fe5e70','#fb836b','#fa9967','#ecc8b3','#e9ddca','#e86f58',B,B,B,B,B,B,],[0]], [['#dd722a','#0c204a','#b5371b','#9ed3ec','#e4a832'],[0]], // autumn, index 14 [['red','#00a','#ec0', 'white', 'orange'],[0]], [['#534e4d','#2d7795','#e11a54','#e9910e','#b18b73',V,V,B,B,B],[0]],];CI=K(0,P.length-1.6);Q=P[CI][0];cl=Q.length;fc=O(P[CI][1]);L='Black';F=[['#fff','White'],['#000',L],['#ddb','Beige'],['pink','Pink']];s=Math.min(W.innerWidth,W.innerHeight);s2=s/2;pR=W.devicePixelRatio;C.width=~~(s*pR);C.height=~~(s*pR);C.style.width=`${s}px`;C.style.height=`${s}px`;X=C.getContext('2d');X.save()X.scale(pR,pR);bg=O([0,1]);C.style.backgroundColor=F[bg][0];X.lineWidth=s/2600;R=(a,b,c,d)=>X.fillRect(a,b,c,d);b1=s/180;b2=s/100;N=O([100,100,150,150,200,200,300,300,400,500,500,500,500,600,600,700]);if (CI===5&N>400){N=300}I=O([100,200,250]);H=0.002;let zo=O([0.25,0.5,1,1,1,1,1,1,2]);if(N===100&zo===2){zo=1.3}let ftc=[1,1,1,3,4,5,6];for(let j=0;j<40;j++){ftc.push(0)}let U=O(ftc);X.fillStyle=F[fc][0];D='No';if (N===100){D=L}else if (N<500&E()<.7){D=L}if (D===L&E()<.3&(CI===4||CI===13)){D='White'}if (CI>14&N<500){D='Black'}W.METADATA={"Color Palette":['Joy','Yue','Yota','Fire','Dalu','Layla','Soft Red','Prime','Dark','Sweet','Amira','Purple','Imran','Skin','Autumn','Emir','Jasin'][CI], "Curve Count":N, "Zoom Factor":zo, "Frame Style":{0:'Single',1:'Split',3:'Triple',4:'Split 1-2',5:'Split 2-1',6:'Bottom Trio'}[U], "Frame Color":F[fc][1], "Iterations":I, "Background Color":F[bg][1], "Outline":D,}console.log(W.METADATA);function G(){let fw=s/20; let fw2=fw/2; R(0,0,s,fw); R(0,s-fw,s,fw); R(0,0,fw,s); R(s-fw,0,fw,s); let im=fw/2; let im2=im/2; if (U===1){R(s2-im2,0,im,s);}else if(U===3){R(s/3-im2,0,im,s);R(s/3*2-im2,0,im,s);}else if(U===4){R(s2-im2,0,im,s);R(s2,s2-im2,s2,im);}else if(U===5){R(s2-im2,0,im,s);R(0,s2-im2,s2,im);}else if(U===6){R(0,s2-im2,s,im);let aw=(s-2*fw-2*im)/3;R(fw+aw,s2,im,s2);R(s2+aw/2,s2,im,s2);}}aa=-zo*s;bb=s*(1+zo);Y=[];for (let j=0;j<N;j++){Y.push([K(aa,bb),K(aa,bb)]);}let ii=0;T=()=>{for (let i=0;i<Y.length;i++){let a=Y[i]; let b=Y[(i + 1)%Y.length]; X.strokeStyle=Q[i%cl]; if (D!='No'&&ii>I-3){H=0.0006;X.strokeStyle=D==='White'?V:B;}X.beginPath(); X.moveTo(...a); let p1=(a[1]+b1); let p2=(a[0]+b2); X.bezierCurveTo(a[0],p1,b[0],p2,b[0],b[1]); X.stroke();}let Z=[]; for (let j=0;j<Y.length;j++){let a=Y[j]; let b=Y[(j+1)%Y.length]; Z.push([a[0]+H*(b[0]-a[0]),a[1]+H*(b[1]-a[1])]);}Y=Z; ii++; if(ii<I){A(T);}else{X.filter='blur('+parseInt(s/150)+'px)';G();X.filter='none';G();window.onImageRendered && window.onImageRendered();}}A(T); </script> </body></html>VanillaJS