0x00ef256c…d6dcsent to0x072d7fe4…7767·#17,108,951·0xae14673e…180fcf
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<style>html, body {
margin: 0;
padding: 0;
background-color:#eee;
}
canvas {
display: block;
margin-left: auto;
margin-right: auto;
}
</style><script>window.METADATA = {};
function onMetadata() {
window.top?.postMessage(
`genart:metadata:${JSON.stringify(window.METADATA)}`,
"*"
);
}
function onDone(index = 0) {
window["RENDERED_INDEX"] = index;
window.top?.postMessage(`genart:done:${index}`, "*");
window.onImageRendered && window.onImageRendered(index);
}
function random_hash() {
let chars = "0123456789abcdef";
let result = "0x";
for (let i = 64; i > 0; --i)
result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
function setMetadata(prop, value) {
window.METADATA[prop] = value;
}
function getMetadata(prop) {
return window.METADATA[prop];
}
class Random {
seed;
decimals;
constructor(hash, decimals = 3) {
this.seed = parseInt(hash.slice(0, 16), 16);
this.decimals = decimals;
}
random_dec() {
this.seed ^= this.seed << 13;
this.seed ^= this.seed >> 17;
this.seed ^= this.seed << 5;
return (
((this.seed < 0 ? ~this.seed + 1 : this.seed) % 10 ** this.decimals) /
10 ** this.decimals
);
}
random_between(a, b) {
return a + (b - a) * this.random_dec();
}
random_int(a, b) {
return Math.floor(this.random_between(a, b + 1));
}
random_choice(x) {
return x[Math.floor(this.random_between(0, x.length * 0.99))];
}
}
function createKeyListeners(ls) {
const l = {};
const add = (ks, f) => (l[ks.join("_")] = f);
const c = (n) => l[n] && l[n]();
const d = document.body;
let ks = [];
d.addEventListener("keydown", (e) => {
ks.push(e.key);
if (ks.length == 2) c(ks.join("_"));
});
d.addEventListener("keyup", () => {
if (ks.length == 1) c(ks.join("_"));
ks = [];
});
ls.forEach((l) => add(l.keys, l.fn));
}
</script><script id="genart-options">const options = { hash: random_hash() }</script><script>// License: CC BY-NC 4.0 www.josvromans.com
W=window;A=W.requestAnimationFrame;S=V=parseInt(options.hash.slice(0,16),16);R=_=>{S^=S<<13;S^=S>>17;S^=S<<5;return((S<0?~S+1:S)%999)/999};
C=({body}=document).createElement('canvas');body.appendChild(C);X=C.getContext('2d');w=1000;h=1500;H=750;M=25;z=h*.1;F=U=v=0;let {sin:N,cos:c,tan:t,PI:P}=Math;wW=W.innerWidth;wH=W.innerHeight;if(wW>=wH*2/3){wW=wH*2/3;}else{wH=wW/2*3}
q=(s,v)=>{C[s]=v;C.style[s]=v*Math.min(wW/w,wH/h)+"px"};q('width',w);q('height',h);Y=R(X=C.getContext('2d'));
O=l=>l[l.length*R()|0];II='Layers #'+(options.tokenId||'???').slice(-3);l=(p='')=>document.title=p+II;
DI=O([0,0,0,1,1,1,1,2,2,2,2,3,3,4,4,4,4,5,5,6,6]);SI=O([0,1,1,2,2,2]);DY=O(DI===3?[2,2,3,4.5]:[1.65,1.8,1.8,1.8,2,2,3,4.5]);
s=[(v)=>N(v),(v)=>N(v/5)*t(-v/3)*N(-v)*c(v/5),(v)=>N(v)*t(-v)*N(-v)*c(v)][SI];
Q=[(x,y)=>{if(y>1600){y=0};return N(y/h)*N(y/h*.05)*c(x/90)*N(x/w*(9+R()*.1))*N(y/h*-3)*(y-h*4)/(30+y/h)*(x-Y*h)/8},(x,y)=>N(x/w*3)*N(x/w*3)*(y-w),(x,y)=>N(x/w*4)*N(x/w*4)*(y-w)-z,(x,y)=>N(x/w*4)*t(x/w*P)*(y-w)-z,(x,y)=>t(x/w)*t(x/w)*(y-w)-z,(x,y)=>N(x/w)*N(x/w)*(y-w),(x,y)=>N(x/w*4)*t(x/w*2)*(y-w)-z][DI];
AD=99;I=O([46,140]);if(SI===1){if(R()<.5){I=148;AD=999}}else{if(R()<.1){I=148;AD=999}}
E=O([0,0,0,1,2,2,3,3,4,5,5,5,6,7,8,9,9,10,10,10,11,11,11,12,13,14,14]);
L=[
['#cdd0c4','#000000','#aebbb4','#f6fae5','#5e0000','#fda201','#370000','#8f0000','#96857b','#cdbda2','#fd8301','#b70000','#fcc301','#016f8f','#d2a7c3','#0184b1','#fc5a01','#d90101','#ad805b','#aea577'],
['#000000','#001427','#145872','#01334d','#2c3848','#6e4a46','#009cb7','#d4b081','#ab6047','#943f3d','#60232f','#2e2529','#d22424','#ae9b7f','#61827f','#336f7d','#bef6e8','#ebf9e7','#d68666','#71e0e1'],
['#000000','#171a18','#2a2e31','#444949','#990007','#6a5231','#b70000','#050019','#d40000','#f5efe7','#730003','#aca896','#7c7d76','#997546','#61696d','#53341c','#ffc700','#f9ab00','#e8d3bf','#ecc41f'],
['#000000','#191c16','#2e342f','#6f0101','#880201','#a90201','#464c4a','#4f0101','#fcc202','#fb8603','#f74a03','#c50301','#abaa95','#eff8f1','#765f3f','#2a0100','#f9a305','#c9c5b4','#5d686b','#fa6603'],
['#001','#000','#643','#322','#e86','#035','#fc0','#fd9','#200','#422','#a00','#500','#c00','#f35','#ccb','#da0','#07e','#f51','#104','#631'],
['#f3f0e9','#54676a','#dddac9','#c4c2b6','#1e1c27','#224f62','#4b4b56','#94a0a2','#6d6d75','#3d383c','#9ed1cf','#888687','#36b4cb','#60cfd2','#112759','#1a47a5','#583b32','#13347d','#bdd7d3','#79d0cf'],
['#ffffff','#cda4b4','#cc7a86','#cb5314','#d8cbd4','#d2742c','#c3464e','#c6e0ed','#c32f2f','#c83a12','#dabeb2','#ca6064','#68a9ed','#af88a7','#9ec9f3','#b2b5c4','#4d7fc8','#d68945','#0a0a0a','#91b5d9'],
['#c21','#fa0','#026','#121', '#404', '#fff'],
['#230000','#0e0c19','#ffedbb','#fae1a1','#221449','#070000','#eac380','#2f1522','#cd9f7b','#341f6c','#d2b7c0','#b37560','#2874c0','#784160','#bd9361','#421540','#712d42','#f4c0ab'],
['#050505','#0182c4','#dfa818','#013821','#007737','#d4cdc5','#96050c','#00463e','#b00b12','#007f86','#005e60','#019bb7','#0192e1','#00627f','#051f12','#0065a9','#1f9fc4','#0d0a4f'],
['#000000','#2f3336','#faca8a','#71767b','#046169','#e7e9ea','#f4c92c','#9fae2d','#f1784d'],
['#000000','#fb5c02','#fbb603','#2a2221','#faf79d','#e7f8da','#fa8d02','#fbcab3','#f9eb6c'],
['#000001','#01012b','#ca0206','#041b54','#046477','#f73a06','#c8a605','#9a0305','#fada04'],
['#0a0e1a','#bb0000','#d5ba76','#564a1b','#00007f','#a08d50','#900000','#c9952d','#000054'],
['#fed','#022','#eda','#d22','#a01','#412','#245','#567','#fc3']][E];
K=setMetadata;K('Palette',['Delight','Coast','Earth','Warm','Quatro','Ocean','Tender','Glow','Lavender','Oasis','Fresh','Golden','Ferno','Lazuli','Fin'][E]);K('Layout',['ZigZag','Facade','Wave','Asymptote','Steep','Slope','Blow'][DI]);K('Wave',SI!==1&&I==148?'Stripe':['Sin','Tan','Custom'][SI]);K('Vibration',DY>1.9?'No':DY<1.8?'High':'Low');K('F11',R(Z='globalAlpha')<.04?'Yes':'No');onMetadata();
createKeyListeners([{keys:['p'],fn:()=>{U=!U;U||A(T)},description:'(Un)pause the rendering'},{keys:['r'],fn:()=>a(),description:'Regenerate the artwork, but in lower or higher resolution'},{keys:['v'],fn:()=>r(),description:'Regenerate in vertical or default mode'}]);d=DI==0?200:0;
PL=[];for(let k=I;k--;){let [x,y]=[R()*w*2-d,R()*h];PL.push([0,1].map(i=>[s(P*i)*H+x,c(P*i)*H+y]))}
r=_=>{v=!v;F=!F;a()};a=_=>{S=V;J=F?3:40;B=w/(F?299:999);X.fillStyle='#fff';X[Z]=1;X.fillRect(0,0,w,h);X[Z]=.1;D=(x,y)=>{if(v){[x,y]=[y,x]};y+=Q(x,y);x>M&&x<w-M&&y>M&&y<h-M&&X.fillRect(x,y,B,B)};x=y=i=pi=0;
e=J*7**7;T=(a)=>{l(`${~~(i/e*100)}% `);for(an=5000;an--;){if(i%4<1){pi=(pi+1)%I;X.fillStyle=L[pi%L.length]};let r=PL[pi][2*R()|0];x+=(r[0]-x)/O([1.1,2,4]);y+=(r[1]-y)/DY;x+=s(y/14)*(w/AD);y+=t(y/h)*(w/50)*s(x/w*9);D(y,x,i++)};if(!U&&i<e){A(T)}else{l(U?'(paused) ':'');!U&&onDone()}};A(T);F=!F};a()</script></body>