var my={};function decpctfraclineMain(mode){this.version='0.71';this.mode=typeof mode!=='undefined'?mode:'int';w=600;h=350;var s="";s+='
';s+='';s+='';s+='
© 2018 MathsIsFun.com v'+this.version+'
';s+='
';document.write(s);el=document.getElementById('canvasId');ratio=2;el.width=w*ratio;el.height=h*ratio;el.style.width=w+"px";el.style.height=h+"px";g=el.getContext("2d");g.setTransform(ratio,0,0,ratio,0,0);this.marks=[];document.getElementById('clearBtn').style.visibility='hidden';el.addEventListener("mousemove",onmouseMove,false);el.addEventListener("mousedown",onmouseDown,false);el.addEventListener('touchstart',ontouchstart,false);el.addEventListener('touchmove',ontouchmove,false);my.lineX=30;my.lineWd=540;my.lineMin=-12;my.lineMax=22;my.lineDen=10;my.vals=numLineVals();my.scale=my.lineWd/((my.lineMax-my.lineMin)/my.lineDen);go();} function go(x){g.clearRect(0,0,el.width,el.height);numLineDraw(my.lineX,50,my.lineWd,x);} function ontouchstart(evt){var touch=evt.targetTouches[0];evt.clientX=touch.clientX;evt.clientY=touch.clientY;evt.touchQ=true;onmouseDown(evt)} function ontouchmove(evt){var touch=evt.targetTouches[0];evt.clientX=touch.clientX;evt.clientY=touch.clientY;evt.touchQ=true;onmouseMove(evt);evt.preventDefault();} function ontouchend(evt){el.addEventListener('touchstart',ontouchstart,false);window.removeEventListener("touchend",ontouchend,false);} function onmouseDown(evt){var bRect=el.getBoundingClientRect();var mouseX=(evt.clientX-bRect.left)*(el.width/ratio/bRect.width);var mouseY=(evt.clientY-bRect.top)*(el.height/ratio/bRect.height);var m=val2x(mouseX);marks.push(m);document.getElementById('clearBtn').style.visibility='visible';go(0);if(evt.preventDefault){evt.preventDefault();} else if(evt.returnValue){evt.returnValue=false;} return false;} function onmouseMove(evt){var bRect=el.getBoundingClientRect();var mouseX=(evt.clientX-bRect.left)*(el.width/ratio/bRect.width);var mouseY=(evt.clientY-bRect.top)*(el.height/ratio/bRect.height);go(mouseX);} function numLineVals(){var vals=[];for(var i=my.lineMin;i<=my.lineMax;i++){var v=i/my.lineDen;var pct=Math.round(v*100);var frac={num:i,den:my.lineDen};var simplest={num:i,den:my.lineDen};var gcd=Math.abs(gcdEuclid(i,10));if(gcd>1){simplest.num/=gcd;simplest.den/=gcd;} vals.push({v:v,pct:pct,frac:frac,simp:simplest});} my.valmin=vals[0].v;my.valmax=vals[vals.length-1].v;console.log("vals",my.valmin,my.valmax);return vals;} function numLineDraw(x,y,wd,currX){var zero=val2px(0);console.log("zero",zero);g.strokeStyle='blue';g.lineWidth=2;g.beginPath();g.moveTo(zero,y);g.lineTo(x+wd,y);g.stroke();g.fillStyle='blue';g.drawArrow(x+wd+10,y,20,2,30,15,0);g.fill();g.strokeStyle='red';g.lineWidth=2;g.beginPath();g.moveTo(zero,y);g.lineTo(x,y);g.stroke();g.fillStyle='red';g.drawArrow(x-10,y,20,2,30,15,Math.PI);g.fill();g.textAlign='center';g.lineWidth=1;var edge=50;var vals=my.vals;for(var i=0;ix+wd-10)continue;var yp=y+35;if(i%2)continue;g.fillText(v.v.toString(),xp,yp);g.beginPath();g.moveTo(xp,y-10);g.lineTo(xp,y+15);g.stroke();} if(currX>0&&currX