- Author:
- Per-Olov
- Twitter:
- @
- GitHub:
- possan
- Facebook:
- Google+:
- +
- Reddit:
- /r/
- Pouet:
- Website:
- possan.se
- Compo:
- canvas
- Demo link:
- https://js1k.com/2019-x/demo/4091
- Shortlink:
- https://js1k.com/4091
- Blog post:
- please update here!
- Bytes:
- 805
- Chars:
- 805
- Submission
D=x=>atob(x).split('').map(t=>t.charCodeAt(0));P=D('uNaa16jpzNWIqEf1+Vg3zN7ATPPMlsHojn5UeZj9r97bmriVeJ7sWeW7isXB83x5n4jZ9OzIzfW/5W5JwfN6ptuo7zdHZN5s9/j576PlvjvQiJ+qzPrn/lf0SlTUy+3zx83f2A==');J=D('ujX4Pzo4tfh5uqb7JHNdnpz0vZIVH2hqaHzvlxEi6hVSlw6SHmOVXo4f2BrvUZXVNlXdylRXFU0YSL2krslW4sxKFhBXJwsd02+T0ZUJ0XepUnJbzpfYVF9UJyLTjglOFUzMyg==');A=['#fa9','#221','#eac','#520','#fff'];F=0;W=a.width;H=a.height;function R(){c.fillStyle='#ffffff06';c.fillRect(0,0,W,H);for(i=0;i<100;i++){idx=J[i];pn=P[i];xc=pn%16*40;yc=Math.floor(pn/16)*40;rr=Math.floor(idx/8)%8*20;colorindex=idx%A.length;rr+=5+5*Math.sin(F/7+i/7);xc+=10*Math.cos(F/9+i/5+yc/9);yc+=10*Math.sin(F/15+i/9);xc+=W/2-320;yc+=H/2-320;c.fillStyle=A[colorindex]+'1';c.beginPath();c.arc(xc,yc,rr,0,Math.PI*2,true);c.fill();}F++;requestAnimationFrame(R);}R();
- Description
- A Rick Astley fever dream
- Base64 encoded
RD14PT5hdG9iKHgpLnNwbGl0KCcnKS5tYXAodD0+dC5jaGFyQ29kZUF0KDApKTtQPUQoJ3VOYWExNmpwek5XSXFFZjErVmczek43QVRQUE1sc0hvam41VWVaajlyOTdibXJpVmVKN3NXZVc3aXNYQjgzeDVuNGpaOU96SXpmVy81VzVKd2ZONnB0dW83emRIWk41czkvajU3NlBsdmp2UWlKK3F6UHJuL2xmMFNsVFV5KzN6eDgzZjJBPT0nKTtKPUQoJ3VqWDRQem80dGZoNXVxYjdKSE5kbnB6MHZaSVZIMmhxYUh6dmx4RWk2aFZTbHc2U0htT1ZYbzRmMkJydlVaWFZObFhkeWxSWEZVMFlTTDJrcnNsVzRzeEtGaEJYSndzZDAyK1QwWlVKMFhlcFVuSmJ6cGZZVkY5VUp5TFRqZ2xPRlV6TXlnPT0nKTtBPVsnI2ZhOScsJyMyMjEnLCcjZWFjJywnIzUyMCcsJyNmZmYnXTtGPTA7Vz1hLndpZHRoO0g9YS5oZWlnaHQ7ZnVuY3Rpb24gUigpe2MuZmlsbFN0eWxlPScjZmZmZmZmMDYnO2MuZmlsbFJlY3QoMCwwLFcsSCk7Zm9yKGk9MDtpPDEwMDtpKyspe2lkeD1KW2ldO3BuPVBbaV07eGM9cG4lMTYqNDA7eWM9TWF0aC5mbG9vcihwbi8xNikqNDA7cnI9TWF0aC5mbG9vcihpZHgvOCklOCoyMDtjb2xvcmluZGV4PWlkeCVBLmxlbmd0aDtycis9NSs1Kk1hdGguc2luKEYvNytpLzcpO3hjKz0xMCpNYXRoLmNvcyhGLzkraS81K3ljLzkpO3ljKz0xMCpNYXRoLnNpbihGLzE1K2kvOSk7eGMrPVcvMi0zMjA7eWMrPUgvMi0zMjA7Yy5maWxsU3R5bGU9QVtjb2xvcmluZGV4XSsnMSc7Yy5iZWdpblBhdGgoKTtjLmFyYyh4Yyx5YyxyciwwLE1hdGguUEkqMix0cnVlKTtjLmZpbGwoKTt9RisrO3JlcXVlc3RBbmltYXRpb25GcmFtZShSKTt9UigpOw==
- Original source
// See: https://github.com/possan/js1k2019
D = x => atob(x).split('').map(t => t.charCodeAt(0))
P = D('uNaa16jpzNWIqEf1+Vg3zN7ATPPMlsHojn5UeZj9r97bmriVeJ7sWeW7isXB83x5n4jZ9OzIzfW/5W5JwfN6ptuo7zdHZN5s9/j576PlvjvQiJ+qzPrn/lf0SlTUy+3zx83f2A==')
J = D('ujX4Pzo4tfh5uqb7JHNdnpz0vZIVH2hqaHzvlxEi6hVSlw6SHmOVXo4f2BrvUZXVNlXdylRXFU0YSL2krslW4sxKFhBXJwsd02+T0ZUJ0XepUnJbzpfYVF9UJyLTjglOFUzMyg==')
A = ['#fa9', '#221', '#eac', '#520', '#fff']
F = 0
W = a.width
H = a.height
function R() {
c.fillStyle = '#ffffff06'
c.fillRect(0, 0, W, H)
for(i=0; i<100; i++) {
idx = J[i]
pn = P[i]
xc = (pn % 16) * 40
yc = Math.floor(pn / 16) * 40
rr = (Math.floor(idx / 8) % 8) * 20
colorindex = idx % A.length
rr += 5 + 5 * Math.sin(F / 7 + i / 7);
xc += 10 * Math.cos(F / 9 + i / 5 + yc / 9);
yc += 10 * Math.sin(F / 15 + i / 9);
xc += W / 2 - 320;
yc += H / 2 - 320;
c.fillStyle = A[colorindex] + '1';
c.beginPath();
c.arc(xc, yc, rr, 0, Math.PI * 2, true)
c.fill();
}
F ++;
requestAnimationFrame(R)
}
R()