A 183b app that draws a curve that passes by all the points that are clicked. Inspired by this video. Golfed by xem, xen, p01, aemkei, subzey. Fork me on Github !
Golf progress:
<canvas id=a><script>c=a.getContext`2d`,p=[],a.onclick=e=>{for(a.width^=0,p.push([e.pageX,e.pageY]),x=0;x<999;x++){for(y=0,l=0;l<(_=p.length);l++){for(c.fillRect(p[l][0]-2,p[l][1]-2,4,4),n=p[l][1],d=1,i=0;i<_;i++)i!=l&&(n*=x-p[i][0],d*=p[l][0]-p[i][0]);y+=n/d}c.lineTo(x,y,1,1)}c.stroke()}</script> <canvas id=a><script>c=a.getContext`2d`,p=[],a.onclick=e=>{for(a.width^=x=0,p.push([e.pageX,e.pageY]);x<999;x++){for(y=l=0;l<(_=p.length);l++){for(c.fillRect(p[l][0]-2,p[l][1]-2,4,4),n=p[l][d=1],i=0;i<_;i++)i!=l&&(n*=x-p[i][0],d*=p[l][0]-p[i][0]);y+=n/d}c.lineTo(x,y)}c.stroke()}</script> <canvas id=a><script>c=a.getContext`2d`,p=[],P=0,onclick=e=>{for(a.width^=0,p[P++]=[e.pageX,e.pageY],x=999;x--;){for(y=0,l=P;l--;){for(c.fillRect(p[l][0]-2,p[l][1]-2,4,4),n=p[l][d=1],i=P;i--;)i^l&&(n*=x-p[i][0],d*=p[l][0]-p[i][0]);y+=n/d}c.lineTo(x,y)}c.stroke()}</script> <canvas id=a><script>c=a.getContext`2d`,p=[],P=0,onclick=e=>{for(a.width^=0,p[P++]=[e.pageX,e.pageY],x=999;x--;){for(y=0,l=P;l--;){for(c.fillRect(p[l][0]-2,p[l][1]-2,4,4),n=p[l][1],i=P;i--;)i^l&&(n*=(x-p[i][0])/(p[l][0]-p[i][0]));y+=n/1}c.fillRect(x,y,1,1)}}</script> <canvas id=a><script>c=a.getContext`2d`,p=[],P=0,onclick=e=>{for(a.width^=p[P++]=[e.pageX,e.pageY],x=999;x--;){for(y=0,l=P;l--;){for(c.fillRect((Z=p[l][0])-2,(n=p[l][1])-2,4,4),i=P;i--;)i^l&&(n*=(x-(z=p[i][0]))/(Z-z));y+=n/1}c.fillRect(x,y,1,1)}}</script> <canvas id=a><script>c=a.getContext`2d`,p=[],P=0,onclick=e=>{for(a.width^=p[P++]=[e.pageX,e.pageY],x=999;x--;){for(y=0,l=P;l--;){for(c.fillRect((Z=p[l][0])-2,(n=p[l][1])-2,4,4),i=P;i--;)i^l&&(n*=(x-(z=p[i][0]))/(Z-z));y+=n}c.fillRect(x,y,1,1)}}</script> <canvas id=a><script>c=a.getContext`2d`,P=p=[],onclick=e=>{for(a.width^=p[P++]=e,x=999;x--;c.fillRect(x,y,1,1))for(y=0,l=P;l--;y+=n)for(c.fillRect((Z=p[l].x)-2,(n=p[l].y)-2,4,4),i=P;i--;)i^l&&(n*=(x-(z=p[i].x))/(Z-z))}</script> <canvas id=a><script>c=a.getContext`2d`,P=p=[],onclick=e=>{for(x=a.width^=p[P++]=e;x--;c.fillRect(x,y,1,1))for(y=0,l=P;l--;y+=n)for(c.fillRect((Z=p[l].x)-2,(n=p[l].y)-2,4,4),i=P;i--;)n*=i-l?(x-(z=p[i].x))/(Z-z):1}</script> <canvas id=a onclick="with(a.getContext`2d`)for(a[0]||(P=0),x=a.width^=a[P++]=event;x--;fillRect(x,y,1,1))for(y=0,l=P;l--;y+=n)for(fillRect((Z=a[l].x)-2,(n=a[l].y)-2,4,4),i=P;i--;)n*=i-l?(x-(z=a[i].x))/(Z-z):1"> <canvas id=a onclick=with(a.getContext`2d`)for(P=a[0]?P:0,x=a.width^=a[P++]=event;x--;fillRect(x,y,1,1))for(y=0,l=P;l--;y+=n)for(fillRect((Z=a[l].x)-2,(n=a[l].y)-2,4,4),i=P;i--;)n*=i-l?(x-(z=a[i].x))/(Z-z):1> <canvas id=a onclick=with(a.getContext`2d`)for(P=a[0]?P:0,x=a.width^=a[P++]=event;x--;fillRect(x,y,1,1))for(y=0,l=P;l--;y+=n)for(q=a[l],fillRect(q.x-2,(n=q.y)-2,4,4),i=P;i--;n*=i-l?(x-z)/(q.x-z):1)z=a[i].x> <canvas id=a onclick=with(a.getContext`2d`)for(P=a[0]?P:0,X=a.width^=a[P++]=event;X--;fillRect(X,Y,1,1))for(Y=0,l=P;l--;Y+=y)for({x,y}=a[l],fillRect(x-2,y-2,4,4),i=P;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas id=a onclick=with(getContext`2d`)for(P=a[0]?P:0,X=width^=a[P++]=event;X--;fillRect(X,Y,1,1))for(Y=0,l=P;l--;Y+=y)for({x,y}=a[l],fillRect(x-2,y-2,4,4),i=P;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas onclick=with(a=getContext`2d`)for(P=a[0]?P:0,X=width^=a[P++]=event;X--;fillRect(X,Y,1,1))for(Y=0,l=P;l--;Y+=y)for({x,y}=a[l],fillRect(x-2,y-2,4,4),i=P;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas onclick=a=getContext`2d`;for(P=a[0]?P:0,X=width^=a[P++]=event;X--;a.fillRect(X,Y,1,1))for(Y=0,l=P;l--;Y+=y)for({x,y}=a[l],a.fillRect(x-2,y-2,4,4),i=P;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas onclick=a=getContext`2d`;for(P=a[0]?P:0,X=width^=a[P++]=event;X--;a[R](X,Y,1,1))for(Y=0,l=P;l--;Y+=y)for({x,y}=a[l],a[R="fillRect"](x-2,y-2,4,4),i=P;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas onclick=a=getContext`2d`;for(X=width^=a[id++]=event;X--;a.fillRect(X,Y,1,1))for(Y=0,l=id;l--;Y+=y)for({x,y}=a[l],a.fillRect(x-2,y-2,4,4),i=id;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x> <canvas onclick=a=getContext`2d`;for(X=width^=a[id++]=event;X--;a[q](X,Y,1,1))for(Y=0,l=id;l--;Y+=y)for({x,y}=a[l],a[q=`fillRect`](x-2,y-2,5,5),i=id;i--;y*=i-l?(X-z)/(x-z):1)z=a[i].x>