0xbbb0…653a

All memos sent from and to 0xbbb0…653a.

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
"Rotae" explores the vast array of beautiful and unexpected shapes that can appear from the simple process of letting wheels rotate on (many more) wheels. Taking a step beyond what the physical toy could do that many of us have played with (long ago) and stringing together anywhere from three to eight wheels. The algorithm starts by determining the number of wheels and what "m-fold" symmetry to achieve. From there the radii and frequencies are calculated per wheel in such a way as to ensure that the output won't turn into chaos, but an unpredictable, yet fully symmetric path that closes on itself. Giving a seemingly endless variety in the paths that get drawn. After a few seconds you can watch how the line gets drawn, possibly revealing unexpected shapes hidden within.
"Rotae" explores the vast array of beautiful and unexpected shapes that can appear from the simple process of letting wheels rotate on (many more) wheels. Taking a step beyond what the physical toy could do that many of us have played with (long ago) and stringing together anywhere from three to eight wheels. The algorithm starts by determining the number of wheels and what "m-fold" symmetry to achieve. From there the radii and frequencies are calculated per wheel in such a way as to ensure that the output won't turn into chaos, but an unpredictable, yet fully symmetric path that closes on itself. Giving a seemingly endless variety in the paths that get drawn. After a few seconds you can watch how the line gets drawn, possibly revealing unexpected shapes hidden within. Dutch auction starting at 1.0Ξ and decreasing in price every 5 mins to a resting price of 0.1Ξ. Pricing tiers: 1.0Ξ → 0.6Ξ → 0.4Ξ → 0.3Ξ → 0.2Ξ → 0.15Ξ → 0.1Ξ
(()=>{"use strict";function e(e){let t=x(~~e[0],0,255),f=x(~~e[1],0,255);return"#"+(x(~~e[2],0,255)|f<<8|t<<16|16777216).toString(16).slice(1)}function t(t,f,l){const r=l/180*d;return e((([e,t,f])=>{let l=h(e+.3963377774*t+.2158037573*f,3),r=h(e-.1055613458*t-.0638541728*f,3),n=h(e-.0894841775*t-1.291485548*f,3);return[x(~~(255*w(4.0767245293*l-3.3072168827*r+.2307590544*n)),0,255),x(~~(255*w(-1.2681437731*l+2.6093323231*r-.341134429*n)),0,255),x(~~(255*w(-.0041119885*l-.7034763098*r+1.7068625689*n)),0,255)]})([t/=100,(f/=100)?f*s(r):0,f?f*i(r):0]))}var f=Math.sqrt,l=Number.EPSILON,r=Math.round,n=Math.abs,a=Math.max,c=Math.min,o=Math.floor,i=Math.sin,s=Math.cos,d=Math.PI,h=Math.pow;let u;const b=e=>{u=Uint32Array.from([0,0,0,0].map(((t,f)=>parseInt(e.substr(8*f+2,8),16))))},p=()=>{let e,t=u[3];return u[3]=u[2],u[2]=u[1],u[1]=e=u[0],t^=t<<11,t^=t>>>8,u[0]=t^e^e>>>19,u[0]/4294967296},g=(e=.5)=>p()<e,v=(e=.5)=>p()<e?-1:1,m=(e,t)=>(void 0===t&&(t=e,e=0),p()*(t-e)+e),y=(e,t)=>o(m(e,t)),E=e=>e.length?e[y(e.length)]:void 0,C=e=>{let t,f=e.reduce(((e,t)=>e+t)),l=p()*f;for(t=0;t<e.length;t++){if(l<e[t])return t;l-=e[t]}return 0},M=(e,t,f)=>(e-t[0])*(f[1]-f[0])/(t[1]-t[0])+f[0],k=(e,t)=>[e*s(t),e*i(t)],x=(e,t,f)=>a(c(e,f),t),R=e=>{let t=parseInt(e.replace("#",""),16);return[t>>16,255&t>>8,255&t]},w=e=>.0031308<e?1.055*h(e,1/2.4)-.055:12.92*e,F=.95047,$=1.08883,A=.137931034,I=.12841855,N=(e,t,f)=>{const l=P(e),r=P(t);let n=[l[0]+f*(r[0]-l[0]),l[1]+f*(r[1]-l[1]),l[2]+f*(r[2]-l[2])];return j(n)},P=e=>{const[t,f,l]=R(e),[r,n,a]=S(t,f,l),c=116*n-16;return[0>c?0:c,500*(r-n),200*(n-a)]},S=(e,t,f)=>(e=T(e),t=T(t),f=T(f),[L((.4124564*e+.3575761*t+.1804375*f)/F),L((.2126729*e+.7151522*t+.072175*f)/1),L((.0193339*e+.119192*t+.9503041*f)/$)]),T=e=>.04045>=(e/=255)?e/12.92:h((e+.055)/1.055,2.4),L=e=>e>.008856452?h(e,1/3):e/I+A,j=e=>{const[t,f,l]=e;let r,n,a,c,o,i;return n=(t+16)/116,r=isNaN(f)?n:n+f/500,a=isNaN(l)?n:n-l/200,n=1*O(n),r=F*O(r),a=$*O(a),c=z(3.2404542*r-1.5371385*n-.4985314*a),o=z(-.969266*r+1.8760108*n+.041556*a),i=z(.0556434*r-.2040259*n+1.0572252*a),[c,o,i]},z=e=>255*(.00304>=e?12.92*e:1.055*h(e,1/2.4)-.055),O=e=>e>.206896552?e*e*e:I*(e-A),_=(e,t)=>{let f,l,r,n=[];for(let a=0;a<e.steps;a++)r=e.step_size*a*d*2,f=l=0,e.forEach((e=>{f+=B(t,e,r,0==e.i?s:i),l+=B(t,e,r,0==e.i?i:s)})),n.push([f,l]);return n},B=(e,t,f,l)=>e*t.R*l(t.n*f),G=(e,t)=>{for(e=n(e),t=n(t);t;)[e,t]=[t,e%t];return e},W=e=>e.reduce(G),q=(e,t)=>0===t?e:q(t,e%t),D=e=>{let t=[],f=e.length;for(let l=0;l<f;l++)for(let r=l+1;r<f;r++)t.push(n(e[l]-e[r]));return t.reduce(q)};var H=u=>{b(u);let x=(()=>{var e=Math.ceil;let t=y(3,9);const f=y(2,10),c=E([[1],[1,2],[1,3],[1,2,3,4],[1,5],[1,2,3,4,5,6],[1,3,5,7],[1,2,4,5,7,8]][f-2]);let o=[];for(let e,l=0;l<t;l++){if(e=v(),1<l){let f=o.map((e=>0<e.n?1:-1));(f.every((e=>1===e))||f.every((e=>-1===e)))&&(l==t-1||g(.5+.1*l-2))&&(e=-1*f[0])}let r=5;2===f&&(r=4<t?6:12);let a=e*y(0,0==l?2:r)*f+c;if(1==l)for(;n(a)===n(o[l-1].n);)a=e*y(0,r)*f+c;else if(1<l)for(;n(a)===n(o[l-1].n)||n(a)===n(o[l-2].n);)a=e*y(0,r)*f+c;let i=y(3>=t&&0===l?3:1,11)/10;if(0<l)for(;i===o[l-1].R;)i=y(1,11)/10;o.push({R:i,n:a,i:v(.2)})}const i=D(o.map((e=>e.n))),s=W(o.map((e=>e.i*e.n))),d=i/s;o.symm=d;const h=o.map((e=>e.R)).reduce(((e,t)=>e+t),0);o.forEach((e=>e.R=a(.04,.02*r(e.R/h*1/.02)))),o.forEach((e=>e.R=r(100*(e.R+l))/100));let u=2e3;return 3===d||6===d||7===d?u=2100:9===d&&(u=2250),o.steps=e(u/s+1),o.step_size=1/u,o})();x.adj=!1;let w=_(x,400),F=0;for(let e=0;e<w.length-1;e++)F+=f((w[e+1][0]-w[e][0])**2+(w[e+1][1]-w[e][1])**2);let $,A,[I,P,S,T,L,j,z,O,B,G,q,H,U]=(e=>{function f(e){return 1===e?h.concat(h.slice(0).reverse(),h[0]):2===e?h.concat(h.slice(0).reverse()):3===e?h.concat(h[0]):void 0}let l,r,n,a,c,o,i,s,d,h,u,b,v,M;switch(l=5e3<e&&g(.15)?1:0,M=p(),r=0,.3>M&&(r=1),.125>M&&1!==l&&(r=2),.05>M&&15e3>e&&(r=3),1!==l&&15e3>e&&(g(.15)?r=4:g(.05)&&(r=5)),n=0,1!==r||g(.9)?5===r&&g(.8)&&(n=1):n=1,r){case 3:a=2;break;case 1:a=1===l?E([1,2]):1===n?1e4>e?E([1,2]):1:E([0,1,2]);break;case 4:a=E([1,2]);break;case 5:a=0===n?2:3;break;case 2:a=E(2e4<e?[1,4]:[0,1]);break;default:let t=[0,1,2,3];a=15e3>e?t[C([2,2,2,1])]:t[C([.5,2,2,2])]}0===r&&2e4<e&&g(.5)?a=3:3e4<e&&g(.8)&&(a=3,r=0,n=0);let k=10,x=11,R=12,w=14,F=15;const $=e=>A.filter((t=>0<=e.indexOf(t)));let A;if(M=p(),A=.15>M?[0,1,6,8,9,13,R,w]:[0,1,2,3,4,5,6,7,8,9,k,x,R,13,w,F,16],0===a&&(A=$([1,0,4,5,6,k,13])),5===r?A=$(0===n?[0,4,F,5,6,1,8,x]:[0,5,6,4,9,x,R,F]):4===r?A=$([1,0,2,3,6,7,8,9,k,x,R,13,F]):3===r?A=$([1,0,3,5,6,8,9,k,x,R,w]):1===r?A=$(0===n?[1,0,2,5,6,8,9,k,x,R,w,16]:[1,0,2,6,8,9]):2===r&&(A=$([1,0,2,5,6,8,9,k,x,R,w,16])),c=E(A),M=p(),0===c)h=["#00d7e6","#0159f4","#8d25f4","#e336de"],v=h.slice(1),u=f(1),b="#141c28",s=E([1,2]),o=1,3!==r&&(1!==r||1!==n)&&.2>M&&(b="#4800ff",s=3);else if(1===c)h=["#f24088","#fd894a","#ffc12e","#fff23f"],u=f(1),b="#f8f8f8",v=["#f0f0f0","#e3e3e3"],o=2,3!==r&&4!==r&&1!==n&&.2>M&&(b="#ff13a2",o=1,s=3);else if(2===c){h=["#FCFCFC"],u=f(3);let e=m(190,380)%360;b=t(45,20,e),v=[t(55,20,e),t(35,15,e)],o=0,s=2,d=!0}else if(3===c)h=["#FCFCFC","#020515"],u=h,b="#ffe427",o=0,s=0,d=!1,i=!0;else if(4===c)h=["#94165c","#f90062","#3ec2fa","#054ba8"],u=f(2),b="#191525",v=["#970f44","#054ba8"],o=1,i=!0;else if(5===c)h=["#ed555d","#fffcc9","#41b797","#efb313","#894e79"],u=f(3),b="#2d1922",v=["#612651","#551114"],o=1;else if(6===c)h=["#ff6936","#fddc3f","#00bb70","#0075ca"],u=f(1),b="#020202",v=["#cd4618","#049d5f","#0070c2"],o=1;else if(7===c){let e=y(180,400)%360;h=[t(39,17,e),t(57,21,e),t(82,13,e),t(95,2,e)],u=f(1),e=(e+30)%360,b=t(96,1,e),v=[t(98,0,e),t(88,6,e),t(85,9,e)],o=2,d=!1,i=!0}else 8===c?(h=["#fde725","#5dc963","#21908c","#3b528b","#440154"],u=f(1),b="#f1f1f1",v=["#e8e4f0","#e3e9f7"],o=2):9===c?(h=["#f3c43e","#fa9788","#6e85e8","#5fe8d8","#d164f2"],u=f(3),b="#03203a",v=["#a41fa3","#a025c5","#5c76e4"],o=1):c===k?(h=["#ec8445","#b91a05","#494f5c","#3e9498","#a99d97","#d1c9c6"],u=f(3),b="#f1f1f1",v=["#b5e1e3","#ffe4d3","#e6e3e2","#9fc2c8"],o=2):c===x?(h=["#5bd5cf","#f4f3ee","#f5d388","#da2871"],u=f(1),b="#fcfafa",v=["#d2f9f7","#f8e9e9","fff6e1"],o=2):c===R?(h=["#EFB605","#E58903","#E01A25","#C20049","#991C71","#66489F","#2074A0","#10A66E","#7EB852"],u=f(3),b="#f6f6f6",v=["#d9d6e2","#e4cccc"],o=2,.1>M&&(b="#5508ac",o=1,s=3)):13===c?(h=["#e31f4f","#f0ac3f","#18acab","#26265a","#ea7d81","#dcd9d0"],u=f(3),b="#f2f2f2",v=["#ffdae2","#fde2b6","#daefed"],o=0,d=!1,i=!0):c===w?(h=["#f9fdff","#c5fbff","#abefff","#8deaff","#4fcdff"],u=f(2),b="#00b7ff",v=["#4fcdff","#abefff"],o=1,d=!0,s=2):c===F?(h=["#6d02c9","#d863f6","#62ef46","#275e2e"],u=f(2),b="#1a0030",v=["#6d02c9","#2fa518","#23732d"],o=1,i=!0):16===c&&(h=["#ed89b7","#e75511","#e21a15","#100b0f"],u=f(3),b="#f9f3f4",v=["#e9a5bb","#f5b1b1","#ffeae9"],o=2);return void 0===s&&(M=p(),s=0,.9>M&&(s=1),.55>M&&(s=2)),void 0===d&&(d=g(.3),1===s||4===r||5===r||3===r?d=!1:2===c&&(d=g(.75))),1===n&&(2===o?o=4:1===o&&(o=3)),5===r&&0===n&&(0===c||4===c||c===F)&&(o=3),void 0===i&&(i=!1,0===o&&1!==r&&2!==r?i=!0:0===r&&(i=g(.75)),2===c&&1!==r&&3!==r&&5!==r&&2!==r&&(i=g(.75))),5===r&&(i=!1),[l,r,n,a,c,o,i,s,d,h,u,b,v]})(F),Z=["source-over","lighten","darken","screen","multiply"];return q=(t=>{let f=[],l=[],r={};return(e=>{for(let t=0;t<e.length;t++)f.push(t/(e.length-1));l=e})(t),t=>(t=>{let n,i;i=c(1,a(0,t));const s=o(1e4*i);if(r[s])n=r[s];else{for(let t=0;t<f.length;t++){const r=f[t];if(i<=r){n=l[t];break}if(i>=r&&t===f.length-1){n=l[t];break}if(i>r&&i<f[t+1]){i=(i-r)/(f[t+1]-r),n=N(l[t],l[t+1],i),n=e(n);break}}r[s]=n}return n})(t)})(q),(e,t,l)=>{function o(){function e(){D(1),W();let e=v()*V*m(.2,.9),f=v()*V*m(.2,.9);for(let l=0;l<y(12,18);l++){let l=m(20,200)*X,[r,n]=k(m(.1*V,.5*V),m(Q));r+=e,n+=f;let a=t.createRadialGradient(r,n,0,r,n,l);const c=(e,t)=>a.addColorStop(e,`rgba(${R(E(G))},${t})`);c(0,.15),c(1,0),N(a),J(r,n,l)}D()}function r(e){let l=m(Q),r=n(s(l)),c=n(i(l)),o=M(V/(c<=r?r:c),[V,f(2)*V],[0,1]),d=V*M(f(o),[0,1],[1.4,1.8]),h=t.createLinearGradient(...k(d,l),...k(d,l+K));const u=[1,.95,.85,.65,.55,.35,.175,.05,0],b=[0,.155,.29,.41,.47,.59,.71,.845,1];for(let t=0;t<u.length;t++)p=.3*b[t],g=.7*u[t],h.addColorStop(p,`rgba(${R(e)},${g})`);var p,g;N(h),a()}const a=()=>t.fillRect(-V,-V,l,l);if(D(),W(1),N(H),a(),2===O)for(let e=0;e<E([2,3]);e++)r(E(U));if(1===O||14===L){if(0===L)for(let t=0;3>t;t++)e();(()=>{D(j);for(let e=0;2e3>e;e++)N(E(G)),W(m(.2,.6)),J(m(-V,V),m(-V,V),X*m(.25,1.75));D(),W()})()}}function C(){t.lineWidth=1.5*X,W(3===P?.8:1),D(j)}function F(e,l){var o=Math.acos;const d=e=>r(ee/e)/ee;let u;const b=e=>n(i(l*r(ee/te)/ee*Q)*e);1===T?u=M(h(e[l].dist,1.5),[0,1],[2,35]):0===T?u=25:2===T?u=27*(.1+b(.75)):3===T?u=15*(.1+b(.5)):4===T&&(u=8),3===P&&(u=20*(.05+b(.7))),u*=X,g(z?.02:0)&&ne>100/Y&&(re=m(.2,.8),ne=0),ne++;let v=(re+l*(z?.002:d(fe)))%1;3===L&&(v=r(v)),0===S?N(q(v)):(e=>{t.strokeStyle=e})(q(v));const y=e=>e**2;if(2===L){let e=o(i(re*Q+l*d(le)*K+K/2))/K;e=1===P&&1===S||5===P?1-s(e*K/2):3===T||1===P&&0===S?1-f(1-e**2):0===T?(e=>0===e?0:h(2,10*e-10))(e):(e=>e**4)(e),5===P?e=c(e+.05,1):0===T||2===T?e*=.7:(1===T||1===P&&0===S)&&(e*=.8),W(e)}const E=e=>{t.save(),t.translate(...e)},C=e=>t.rotate(e),k=()=>t.restore(),x=()=>t.fill(),R=()=>t.stroke();if(t.beginPath(),0===P||3===P)J(...e[l],u);else if(2===P){E(e[l]),C(.1*Q);let f=4===T?1.2:1,r=0===T?.05:.16;t.rect(-u*r,-u*f,2*u*r,2*u*f),x(),k()}else if(1===P){let f=1===S?200:400;E(e[l]),0===I?t.ellipse(0,0,.25*u,u,l*Q*d(f),0,Q):1===I&&(1===S&&C(l*d(f)*Q),u*=.75,t.moveTo(0,-u),t.lineTo(.6*u,0),t.lineTo(0,u),t.lineTo(.6*-u,0),t.closePath()),0===S?x():R(),k()}else if(5===P)E(e[l]),1===S&&C(l*d(3===T?90:110)*Q),t.rect(-u,-u,2*u,2*u),0===S?x():R(),k();else if(4===P&&l<ee-2){D(j);let t=e[l],f=[1*X,30*X],n=M(u,f,[2,10]),s=M(u,f,[2,6]);for(let e=0;e<n;e++){let e=m(.25,s)*X,f=u-e,n=m(-f,f);if(2===L){let e=o(i(re+l*d(le)*K))/K;e=.85*y(e),W(a(0,c(1,e+m(-.15,.15))))}else W(m(.4,.9));let h=(l*d(fe)+m(-.1,.1))%1;3===L&&(h=r(h)),N(q(h)),J(t[0]+-t.dy*n,t[1]+t.dx*n,e)}}if(B){t.save();let f=e[l-25];if(45<l&&g(1===S?1:.4)){let e=X*m(.25,1.25),t=u-1.5*e,l=m(-t,t);W(m(.5,.9)),D(1===S?j:1),N(q(p())),J(f[0]+-f.dy*l,f[1]+f.dx*l,e)}k()}}function N(e){t.fillStyle=e}function W(e=1){t.globalAlpha=e}function D(e=0){t.globalCompositeOperation=Z[e]}function J(e,f,l){t.beginPath(),t.arc(e,f,l,0,Q),t.fill()}$&&clearInterval($),A&&clearTimeout(A);const K=d,Q=2*K,V=l/2,X=l/1e3;t.translate(V,V),b(u),1!==I||x.adj||(x.steps/=50,x.step_size*=50,x.adj=!0),w=_(x,.8*V);let Y=2;1===P?Y=0===S?1:7:2===P?Y=1:3===P?Y=12:5===P&&(Y=0===S?12:9),w=((e,t,f)=>{const l=e.map(((e,t)=>0===t?`M${e}`:`L${e}`)).join(" ")+" Z",n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttribute("d",l);const a=n.getTotalLength()/t;let c=[];for(let e,l=0;l<r(a/f)+1;l++)e=n.getPointAtLength(l*f*t),c.push([e.x,e.y]);return c})(w,X,Y);const ee=w.length;(e=>{const t=e.length;e.forEach(((l,r)=>{const n=f=>e[r][f]-e[(r+1)%t][f];let a=n(0),c=n(1),o=f(a**2+c**2);l.dx=a/o,l.dy=c/o,r===t-1&&(l.dx=e[0].dx,l.dy=e[0].dy)}))})(w),w.forEach((e=>e.dist=f(e[0]**2+e[1]**2)/V));let te=400,fe=400,le=100;3===P?[te,fe,le]=[70,35,15]:1===P?[te,fe,le]=0===S?[800,800,200]:[60,100,40]:5===P?[te,fe,le]=0===S?[140,60,20]:[120,60,25]:2===P&&([te,fe,le]=[800,800,200]);let re=m(.2,.8),ne=0;b(u),o(),C();for(let e=0;e<ee-1;e++)F(w,e);A=setTimeout((()=>{let e=0;b(u),o(),C(),$=setInterval((()=>{F(w,e),e>=ee-1&&clearInterval($),e++}),2e4/ee)}),5e3)}};let U=tokenData.hash;(()=>{let e=window,t=document;const f=t.body.appendChild(t.createElement("canvas")),l=f.getContext("2d");let r,n,a;const o=()=>{l.save(),l.scale(a,a),r(f,l,n)},i=()=>{n=c(e.innerWidth,e.innerHeight),a=e.devicePixelRatio,f.width=~~(n*a),f.height=~~(n*a),f.style.width=`${n}px`,f.style.height=`${n}px`,r&&(l.restore(),o())};e.addEventListener("resize",i),i(),r=H(U),o()})()})();
"Rotae" explores the vast array of beautiful and unexpected shapes that can appear from the simple process of letting wheels rotate on (many more) wheels. Taking a step beyond what the physical toy could do that many of us have played with (long ago) and stringing together anywhere from three to eight wheels. The algorithm starts by determining the number of wheels and what "m-fold" symmetry to achieve. From there the radii and frequencies are calculated per wheel in such a way as to ensure that the output won't turn into chaos, but an unpredictable, yet fully symmetric path that closes on itself. Giving a seemingly endless variety in the paths that get drawn. After a few seconds you can watch how the line gets drawn, possibly revealing unexpected shapes hidden within.