-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathstackie-min.js
1 lines (1 loc) · 1.93 KB
/
stackie-min.js
1
var Stackie=(()=>{var r,a=Math,e=r=>(r*=3982152891,r^=r>>11,r=a.imul(r,2890668881),r^=r>>15,r=a.imul(r,830770091),r^=r>>14),t=r=>{let a=0;return(t=a)=>{let n=e(t+r&2147483647),o=e(t+n&2147483647);return a=++t,o/2147483647}},n=a=>{r=t(a)};function o(r=256,a=r){var e=new Float32Array(r*a),t=(a,t,n)=>e[t*r+a]=n,n=this;n.get=((a,t)=>e[t*r+a]),n.set=t,n.getImageData=((t=m("x"))=>{var n=new ImageData(r,a),o=new Uint32Array(n.data.buffer);return e.forEach((r,a)=>o[a]=t(r)),n}),n.generate=(e=>{for(var n=0,o=0;o<a;o+=(n=n+1<r?n+1:0)?0:1)t(n,o,e(n/r,o/a))})}var u=(r,a=0,e=1,t=r*r*r*(r*(6*r-15)+10))=>(1-t)*a+t*e,v=(r,a,e=r%a)=>e<0?a-e:e,p=r=>r<0?0:r>1?1:r,s=e=>{var t=(()=>{var e,t=r=>e.push(r),n=()=>e.pop(),o=(r,a)=>()=>t(a(...e.splice(-r,r))),s=r=>()=>{var a=n();t(r(n(),a))},l=r=>()=>t(r(n())),m=r=>()=>t(r),g=r=>()=>t(e[r]),h={"*":s((r,a)=>r*a),"/":s((r,a)=>r/a),"-":s((r,a)=>r-a),"+":s((r,a)=>r+a),p:s(f),w:o(3,i),W:o(4,i),e:o(1,u),E:o(3,u),s:l(a.sin),c:l(a.cos),q:l(a.sqrt),a:s(a.atan2),r:o(0,r),"<":s(a.min),">":s(a.max),l:l(a.log),"^":s(a.pow),P:m(a.PI),"~":l(a.abs),"#":l(a.round),$:l(a.floor),C:l(p),"%":o(2,v),"!":l(r=>1-r),"?":l(r=>r<=0?0:1),":":()=>e.push(n(),n()),";":()=>e.push(n(),n(),n()),d:()=>{var r=n();e.push(r,r)}};for(var w of"tuvxyz")h[w]=g(w);for(var d=0;d<10;h[""+d]=m(d++));return(r,a)=>{e=r,h[a]()}})();return(r,a,n=[])=>{for(var o of(n.x=r,n.y=a,e))t(n,o);return n.pop()}},l=r=>0|255*p(r),m=r=>{for(var a=s(r),e=[],t=0;t<1;t+=1/256){var n=l(a(t,0)),o=l(a(t,.5)),u=l(a(t,1));e.push(255<<24|u<<16|o<<8|n)}return r=>e[l(r)]},f=(e,t,n=256,o=n)=>{var p=(u,p,s=r(v(p,o)*n+2*v(u,n))*a.PI*2)=>(e-u)*a.sin(s)+(t-p)*a.cos(s),s=0|e,l=0|t,m=e-s,f=s+1,i=l+1;return u(t-l,u(m,p(s,l),p(f,l)),u(m,p(s,i),p(f,i)))},i=(r,a,e=2,t=e)=>f(r*e,a*t,e,t);return n(42),{makeField:(r,a)=>new o(r,a),program:s,makeRandom:t,setSeed:n,makePaletteMapper:m,generate:(r,a,e=256)=>{var t=new o(e),n=m(a||"x");return t.generate(s(r)),t.getImageData(n)},perlin:f,wrapPerlin:i,random:r}})();