Source for demo by antimatter15.
var b=document.body,c=document.getElementById("c"),t=c.getContext("2d"),cos=Math.cos,sin=Math.sin;b.style.margin=0;c.width=innerWidth;c.height=innerHeight;var f=200,vpX=c.width/2,vpY=c.height/2,p=[],mX=0,mY=0;c.onmousemove=function(a){mX=a.clientX;mY=a.clientY};(c.onclick=function(d){p=[];for(var c="2*Math.sin(Math.sqrt(x*x+y*y))/Math.sqrt(x*x+y*y)",e=new Function("x,y","return "+(d?prompt("function",c):c)),a=-10;a<10;a+=.5)for(var b=-10;b<10;b+=.5)p.push({x:a*10,y:b*10,z:20*e(a,b)})})();setInterval(function(){for(var h=1e-4*(mX-vpX),j=cos(h),l=sin(h),g=1e-4*(mY-vpY),i=cos(g),k=sin(g),a,e,d,b=p.length;b--;){a=p[b];d=a.z*j+a.x*l;a.x=a.x*j-a.z*l;a.z=d*i+a.y*k;a.y=a.y*i-d*k;e=f/(f+a.z);a._x=vpX+a.x*e;a._y=vpY+a.y*e}t.clearRect(0,0,c.width,c.height);if(p.length){t.strokeStyle="rgb(40,50,20)";t.beginPath();t.moveTo(p[0]._x,p[0]._y);for(var m=p.length,b=1;b<m;b++)if(b%40)t.lineTo(p[b]._x,p[b]._y);else t.moveTo(p[b]._x,p[b]._y);t.stroke()}t.fillText("Click to edit equation",99,99)},0);