Skip to content

Instantly share code, notes, and snippets.

@JoachimGoedhart
Created April 3, 2026 08:35
Show Gist options
  • Select an option

  • Save JoachimGoedhart/fc191df55f060ebe1c8a9333df9a2840 to your computer and use it in GitHub Desktop.

Select an option

Save JoachimGoedhart/fc191df55f060ebe1c8a9333df9a2840 to your computer and use it in GitHub Desktop.
Copy-paste into the address bar of a browser
data:text/html,<canvas id=x><script>x.width=x.height=400;X=x.getContext`2d`;A=0;P=[...Array(200)].map((_,i)=>({x:200,y:200,vx:0,vy:0,h:i*1.8}));function f(){A+=0.02;tx=200+Math.cos(A)*120+Math.cos(A*2.3)*60+Math.cos(A*0.7)*40;ty=200+Math.sin(A*1.3)*100+Math.sin(A*2.7)*50+Math.sin(A*0.5)*40;X.fillStyle='rgba(0,0,0,0.08)';X.fillRect(0,0,400,400);P.forEach(p=>{dx=tx-p.x;dy=ty-p.y;d=Math.sqrt(dx*dx+dy*dy)||1;p.vx+=dx*0.015+(Math.random()-.5)*1.5;p.vy+=dy*0.015+(Math.random()-.5)*1.5;p.vx*=0.93;p.vy*=0.93;p.x+=p.vx;p.y+=p.vy;X.beginPath();X.arc(p.x,p.y,1,0,6.28);X.fillStyle='hsl('+p.h+',100%,65%)';X.fill()});X.beginPath();X.arc(tx,ty,2,0,6.28);X.fillStyle='rgb(255,255,255)';X.fill();requestAnimationFrame(f)}f()</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment