new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
189 lines
41 KiB
JavaScript
189 lines
41 KiB
JavaScript
var w,h,ratio,i,s,el,g,div,dragQ,game,my={};function comparenumbersMain(id){my.version='0.64';id=typeof id!=='undefined'?id:'0to10';console.log("stt",id);var test={a:21,b:22};w=360;h=290;graphLt=0;graphTp=0;graphWd=490;graphHt=300;coords=new CoordsFull(w-90,200,'-1','-10,','1000','10',true);tickSparseness=0.2;my.games=[{id:'0to10',name:'0 to 10',typ:'int',min:0,max:10,num:[0,10]},{id:'0to100',name:'0 to 100',typ:'int',min:0,max:100,num:[0,100]},{id:'-10to10',name:'-10 to +10',typ:'int',min:-10,max:10,num:[-10,10]},{id:'0to1dec',name:'Decimal 0 to 1',typ:'dec',min:0,max:1,dec:2,num:[0,1]},{id:'-1to1dec',name:'Decimal -1 to 1',typ:'dec',min:-1,max:1,dec:2,num:[-1,1]},{id:'unitfrac',name:'Unit Fractions',typ:'ufrac',min:0,max:1,num:[0,1]},{id:'frac',name:'Fractions',typ:'frac',min:0,max:1,num:[0,1]}];my.gameRadioN=0;for(var i=0;i<my.games.length;i++){var game=my.games[i];if(game.id==id)my.gameRadioN=i;}
|
||
this.marks=[];this.midX=w/2;this.midY=h-90;this.width=w-40;var s='';s+='<style>input[type="radio"]:checked+label {font-weight: bold;}</style>';s+='<div id="main" style="position:relative; width:'+w+'px; min-height:'+h+'px; background-color: #def; margin:auto; display:block; border: 1px solid black; border-radius: 10px;">';var wd=360;var ht=105;s+='<div style="position:absolute; left:0px; top:10px; font-size:18px; width:'+wd+'px; height:'+ht+'px;">';var divWd=290;var divHt=60;s+='<div style="position:absolute; left:'+(wd/2-divWd/2)+'px; top:'+(ht-divHt)/2+'px; width:'+divWd+'px; height:'+divHt+'px; font-size:18px; border: 3px solid blue;font-size:23px; border-radius:20px; background-color: #cdf;">';var currY=18;s+='<div id="vala" style="position:absolute; left:0px; top:'+currY+'px; width:100px; text-align:center;">a</div>';s+='<div id="valb" style="position:absolute; left:'+(divWd-100)+'px; top:'+currY+'px; width:100px; text-align:center;">b</div>';s+='</div>';var divWd=90;s+='<div id="btns" style="position:absolute; left:'+(wd/2-divWd/2)+'px; top:0px; width:'+divWd+'px; height:'+ht+'px; background-color:yellow; border-radius:10px; ">';my.ineqs=[{name:'>',descr:'greater than',dirn:1},{name:'=',descr:'equal to',dirn:0},{name:'<',descr:'less than',dirn:-1}];currY=5;for(var i=0;i<my.ineqs.length;i++){var ineq=my.ineqs[i];s+='<button id="btn'+i+'" style="position:absolute; left:15px; top:'+currY+'px; font: 24px Arial; width:60px; height:30px; vertical-align:middle; z-index: 10;" class="togglebtn" onclick="ineqClick('+ineq.dirn+')" onmouseover="ineqHover(1,'+i+')" onmouseout="ineqHover(0,'+i+')">'+ineq.name+' </button>';currY+=30;}
|
||
s+='</div>';s+='<img id="tick" src="../images/style/tick.png" style="position:absolute; left:'+3+'px; top:'+90+'px; opacity: 0; z-index:1;">'
|
||
currY+=10;s+='<div id="descr" style="position:absolute; left:0px; top:'+currY+'px; width:'+wd+'px; font:italic 22px Times; text-align:center; margin-top:10px; "> </div>';s+='</div>';s+='<canvas id="canvas1" style="position: absolute; width:'+w+'px; height:'+graphHt+'px; left: 0px; top: 0px; border: none; border-radius: 10px;"></canvas>';s+='<canvas id="numlinecan" style="position: absolute; width:'+w+'px; height:70px; left: 0px; bottom:50px; border: none; background-color: #dcf;"></canvas>';s+='<input id="user" type="text" tabindex="1" style="position: absolute; left: '+(w/2-50)+'px; bottom:55px; display:block; width: 110px; text-align: center; border-radius: 10px; font: 32px Arial; color: #0000ff; color: #0000ff; background-color: white;" value="" oninput="chgVal(this.value,false)" onchange="chgVal(this.value,true)" />';s+=getPopHTML();s+='<canvas id="timercanvas" width="100" height="100" style="position:absolute; z-index:2; width:100px; bottom:-5px; left:5px; "></canvas>';s+='<div style="position: absolute; right:10px; bottom:4px; width:80px; background-color:lightyellow; padding:5px; border-radius:5px; text-align:center; ">';s+='<div id="score" style="font: 24px Verdana; ">0</div>';s+='</div>';s+='<div id="win" style="position: absolute; left:25px; top:10px; width:300px; background-color:gold; padding:5px; border: 3px solid white; border-radius:10px; text-align:center; z-index:10; ">';s+='<br>';s+='<div id="winscore" style="font: 24px Verdana; ">0</div>';s+='<br>';s+='<button id="newBtn" style="font: 20px Arial; height:30px; vertical-align:middle; z-index: 10;" class="togglebtn" onclick="gameNew()" >Again!</button>';s+='</div>';s+='<div id="copyrt" style="font: 10px Arial; color: #6600cc; position:absolute; bottom:5px; left:'+(w/2-100)+'px; width:200px; text-align:center;">© 2018 MathsIsFun.com v'+my.version+'</div>';s+='</div>';document.write(s);el=document.getElementById('canvas1');ratio=3;el.width=w*ratio;el.height=graphHt*ratio;el.style.width=w+"px";el.style.height=graphHt+"px";g=el.getContext("2d");g.setTransform(ratio,0,0,ratio,0,0);el2=document.getElementById('numlinecan');ratio=3;var numlineHt=80;el2.width=w*ratio;el2.height=numlineHt*ratio;el2.style.width=w+"px";el2.style.height=numlineHt+"px";g2=el2.getContext("2d");g2.setTransform(ratio,0,0,ratio,0,0);el2.addEventListener("mousemove",onmouseMove,false);el2.addEventListener("mousedown",onmouseDown,false);el2.addEventListener('touchstart',ontouchstart,false);el2.addEventListener('touchmove',ontouchmove,false);dragType='';var cw=60;var ch=cw;var div=document.getElementById('timercanvas');div.width=cw*ratio;div.height=ch*ratio;div.style.width=cw+"px";div.style.height=ch+"px";gtimer=div.getContext("2d");gtimer.setTransform(ratio,0,0,ratio,0,0);my.ctimer=new Timer(gtimer,25,80,'#cccc00',gameOverCallback);my.clrs=[["Blue",'#0000FF'],["Red",'#FF0000'],["Black",'#000000'],["Green",'#00cc00'],["Orange",'#FFA500'],["Slate Blue",'#6A5ACD'],["Lime",'#00FF00'],["Spring Green",'#00FF7F'],["Teal",'#008080'],["Gold",'#ffd700'],["Med Purple",'#aa00aa'],["Light Blue",'#ADD8E6'],["Navy",'#000080'],["Purple",'#800080'],["Dark SeaGreen",'#8FBC8F']];clrNum=0;document.getElementById('user').value='';my.game=my.games[my.gameRadioN];gameNew();}
|
||
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){el2.addEventListener('touchstart',ontouchstart,false);window.removeEventListener("touchend",ontouchend,false);}
|
||
function onmouseDown(evt){if(my.resultQ)return;var bRect=el2.getBoundingClientRect();var mouseX=(evt.clientX-bRect.left);var xVal=numlineVal(mouseX);choose(xVal);if(evt.preventDefault){evt.preventDefault();}
|
||
else if(evt.returnValue){evt.returnValue=false;}
|
||
return false;}
|
||
function onmouseMove(evt){if(my.resultQ)return;var bRect=el2.getBoundingClientRect();var mouseX=(evt.clientX-bRect.left);var mouseY=(evt.clientY-bRect.top);var xVal=numlineVal(mouseX);drawNumLine(g2,50,30,0,10,mouseX,mouseY);}
|
||
function ineqHover(over,n){console.log("ineqHover",over,n);if(over){var s='"'+my.vala+' '+my.ineqs[n].descr+' '+my.valb+' ?"';document.getElementById('descr').innerHTML=s;}else{document.getElementById('descr').innerHTML='';}}
|
||
function ineqClick(dirn){var yesQ=false;switch(dirn){case-1:if(my.vala<my.valb)yesQ=true;break;case 0:if(my.vala==my.valb)yesQ=true;break;case 1:if(my.vala>my.valb)yesQ=true;break;default:}
|
||
console.log("ineqClick",dirn,my.vala,my.valb,yesQ);if(yesQ){my.score+=5;document.getElementById('score').innerHTML=my.score;document.getElementById('btns').style.backgroundColor='gold';document.getElementById('tick').style.opacity=1
|
||
setTimeout(ansYes,600);}else{my.score-=2;document.getElementById('score').innerHTML=my.score;document.getElementById('btns').style.backgroundColor='red';setTimeout(ansNo,1000);}}
|
||
function ansYes(){document.getElementById('btns').style.backgroundColor='white';document.getElementById('tick').style.opacity=0
|
||
newRound();}
|
||
function ansNo(){document.getElementById('btns').style.backgroundColor='white';}
|
||
function numlineVal(mousex){return coords.toXVal(mousex-50);}
|
||
function calcScore(diff){var pct=Math.abs(diff/(my.game.num[1]-my.game.num[0]))*100;if(pct<=2){return 5;}else{if(pct<=4){return 4;}else{if(pct<=7){return 3;}else{if(pct<=10){return 2;}else{if(pct<=15)return 1;}}}}
|
||
return 0;}
|
||
function fancyText(s,x,y){var clr=g.fillStyle;g.fillStyle='#fff';var d=1;g.fillText(s,x-d,y-d);g.fillText(s,x-d,y+d);g.fillText(s,x+d,y+d);g.fillText(s,x+d,y-d);g.fillStyle=clr;g.fillText(s,x,y);}
|
||
function gameNew(){document.getElementById('win').style.visibility='hidden';document.getElementById('btns').style.backgroundColor='white';my.score=0;document.getElementById('score').innerHTML=my.score;my.gameQ=true;my.minAns=my.game.num[0];my.maxAns=my.game.num[1];drawNumLine(g2,50,30,0,10,0,0);my.ctimer.restart(60);newRound();}
|
||
function newRound(){my.resultQ=false;document.getElementById('descr').innerHTML='';if(!my.gameQ)return;var input='numline';if(my.game.hasOwnProperty('input'))input=my.game.input;var numline=document.getElementById('numlinecan');var numuser=document.getElementById('user');if(input=='numline'){numline.style.visibility='visible';numuser.style.visibility='hidden';}else{numline.style.visibility='hidden';numuser.style.visibility='visible';}
|
||
switch(my.game.typ){case 'int':newIntGame();break;case 'dec':newDecGame();break;case 'count':newCountGame();break;case 'add':case 'sub':case 'mul':case 'div':newMathGame(my.game.typ);break;case 'pct':newPctGame();break;default:}}
|
||
function newPctGame(){my.tgtN=getRandomInt(5,95);var clr=my.clrs[getRandomInt(0,my.clrs.length-1)][1];console.log("newPctGame",my.game,my.tgtN,clr);var wd=graphWd*0.3+Math.random()*graphWd*0.7;var ht=graphHt*0.1+Math.random()*graphHt*0.3;g.clearRect(0,0,el.width,el.height);g.fillStyle=clr;g.beginPath();g.rect((graphWd/2-wd/2),graphHt/2-ht/2,wd*my.tgtN/100,ht);g.fill();g.strokeStyle='#888';g.lineWidth=2;g.beginPath();g.rect(graphWd/2-wd/2,graphHt/2-ht/2,wd,ht);g.stroke();var div=document.getElementById('user');div.value='';div.focus();}
|
||
function newIntGame(){my.vala=getRandomInt(my.game.min,my.game.max);my.valb=getRandomInt(my.game.min,my.game.max);if(Math.random()<0.1){my.valb=my.vala}
|
||
console.log("newIntGame",my.vala,my.valb);document.getElementById('vala').innerHTML=my.vala;document.getElementById('valb').innerHTML=my.valb;}
|
||
function newDecGame(){var fact=Math.pow(10,my.game.dec);my.vala=getRandomInt(my.game.min*fact,my.game.max*fact)/fact;my.valb=getRandomInt(my.game.min*fact,my.game.max*fact)/fact;if(Math.random()<0.1){my.valb=my.vala}
|
||
console.log("newDecGame",my.vala,my.valb);document.getElementById('vala').innerHTML=my.vala;document.getElementById('valb').innerHTML=my.valb;}
|
||
function newCountGame(){my.tgtN=getRandomInt(my.game.min,my.game.max);console.log("newCountGame",my.game,my.tgtN);var maxRad=16;var pts=[];attempts=0;do{var ptx=graphLt+Math.random()*(graphWd-2*maxRad)+maxRad;var pty=graphTp+Math.random()*(graphHt-2*maxRad)+maxRad;var nearest=1e9;for(var j=0;j<pts.length;j++){var pt=pts[j];var d=dist(pt.x-ptx,pt.y-pty);if(d<nearest){nearest=d;}}
|
||
if(nearest>2*maxRad){pts.push({x:ptx,y:pty});}}while(pts.length<my.tgtN&&attempts++<1000);my.tgtN=pts.length;console.log("newCountGame",pts.length,attempts);g.clearRect(0,0,el.width,el.height);for(var i=0;i<pts.length;i++){var pt=pts[i];var clr=my.clrs[getRandomInt(0,my.clrs.length-1)];var rad=(1+Math.random())*maxRad*0.6;var sides=getRandomInt(1,5);g.fillStyle=clr[1];g.beginPath();if(sides<3){g.arc(pt.x,pt.y,rad,0,2*Math.PI);}else{var poly=getRegular(pt.x,pt.y,rad,Math.PI*(0.5+1/sides),sides);drawPts(poly);}
|
||
g.fill();}}
|
||
function newMathGame(typ){var min=my.game.min;var max=my.game.max;var dec=my.game.dec;console.log("newMathGame",min,max,typ,dec);var decAns=dec;switch(typ){case 'add':my.tgtN=getRandomInt(min*2,max);var a=getRandomInt(min,my.tgtN-min);var b=my.tgtN-a;if(dec>0){var dec1=getRandomInt(0,dec-a.toString().length+1);var dec2=getRandomInt(0,dec-b.toString().length+1);if(dec1>0)a*=Math.pow(10,dec1);if(dec2>0)b*=Math.pow(10,dec2);}
|
||
console.log("add",a,b,dec1,dec2);my.q=fmtDec(a,dec)+' + '+fmtDec(b,dec)+' =';my.tgtN=fmtDec(a+b,dec)
|
||
break;case 'sub':var a=getRandomInt(min,max);var b=getRandomInt(min,max);if(dec>0){var dec1=getRandomInt(0,dec-a.toString().length+1);var dec2=getRandomInt(0,dec-b.toString().length+1);if(dec1>0)a*=Math.pow(10,dec1);if(dec2>0)b*=Math.pow(10,dec2);}
|
||
if(a<b){var t=a
|
||
a=b;b=t;}
|
||
my.tgtN=fmtDec(a-b,dec)
|
||
my.q=fmtDec(a,dec)+' - '+fmtDec(b,dec)+' =';break;case 'mul':var a=getRandomInt(min,max);var b=getRandomInt(min,max);if(dec>0){dec1=getRandomInt(0,dec);dec2=dec-dec1;decAns=dec*2;if(dec1>0)a*=Math.pow(10,dec1);if(dec2>0)b*=Math.pow(10,dec2);}
|
||
my.tgtN=fmtDec(a*b,decAns,true)
|
||
my.q=fmtDec(a,dec)+' × '+fmtDec(b,dec)+' =';break;case 'div':var a=getRandomInt(min,max);var b=getRandomInt(min,max);if(dec>0){dec1=getRandomInt(0,dec);dec2=dec-dec1;decAns=dec*2;if(dec1>0)a*=Math.pow(10,dec1);if(dec2>0)b*=Math.pow(10,dec2);}
|
||
my.tgtN=fmtDec(a,dec,true);my.q=fmtDec(a*b,decAns,true)+' / '+fmtDec(b,dec)+' =';break;default:}
|
||
g.clearRect(0,0,el.width,el.height);g.fillStyle='orange';g.font='40px Arial';g.textAlign='center';g.fillText(my.q,w/2,140);}
|
||
function chgVal(val,doneQ){console.log("chgVal",val,val.length,my.tgtN.toString().length,doneQ);if(doneQ||(val.length==my.tgtN.toString().length)||(Number(val)==Number(my.tgtN))){choose(val);document.getElementById('user').value='';}}
|
||
function choose(val){}
|
||
function getRegular(midX,midY,radius,sttAngle,n){var pts=[];var dAngle=Math.PI*2/n;for(var i=0;i<n;i++){var angle=sttAngle+i*dAngle;var x=midX+radius*Math.cos(angle);var y=midY+radius*Math.sin(angle);pts.push({x:x,y:y});}
|
||
return pts;}
|
||
function drawPts(pts){for(var i=0;i<pts.length;i++){var pt=pts[i];if(i==0){g.moveTo(pt.x,pt.y)}else{g.lineTo(pt.x,pt.y)}}}
|
||
function typChg(){var div=document.getElementById('typSel');typ=div.options[div.selectedIndex].text;typ=typ.toLowerCase();console.log("typChg",typ);restart();}
|
||
function getRadioHTML(prompt,id,lbls,func){var s='';s+='<div style="display:inline-block; border: 1px solid white; border-radius:5px; padding:3px; margin:3px; background-color:rgba(255,255,255,0.5); width:360px;column-count: 2;" >';for(var i=0;i<lbls.length;i++){s+='<div style="">';var idi=id+i;var lbl=lbls[i];var check='';if(i==0)check=' checked="checked" ';s+='<input id="'+idi+'" type="radio" name="'+id+'" value="'+lbl+'" onclick="'+func+'('+i+');"'+check+' autocomplete="off" >';s+='<label for="'+idi+'">'+lbl+' </label>';s+='</div>';}
|
||
s+='</div>';return s;}
|
||
function radioClick(n){my.gameRadioN=n;}
|
||
function getPlayHTML(w){var s='';s+='<style type="text/css">';s+='.btn {display: inline-block; position: relative; width:'+w+'px; height:'+w+'px; margin-right:'+w*0.2+'px; padding: .6em; border: 0 solid rgba(208,208,248,1); border-radius: 10em; background: linear-gradient(#fff, #ccf), #c9c5c9; box-shadow: 0 3 4 rgba(0,0,0,.4); }';s+='.btn:hover {background: linear-gradient(#f5f5f5, #b9b9b9), #c9c5c9; }';s+='.btn:before, button:after {content: " "; position: absolute; }';s+='.btn:active {top:'+w*0.05+'px; box-shadow: 0 '+w*0.02+'px '+w*0.03+'px rgba(0,0,0,.4); }';s+='.play:before { left: '+w*0.36+'px; top: '+w*0.22+'px; width: 0; height: 0; border: '+w*0.3+'px solid transparent; border-left-width: '+w*0.4+'px; border-left-color: blue; }';s+='.play:hover:before {border-left-color: yellow; }';s+='.pause:before, .pause:after {display: block; left: '+w*0.29+'px; top: '+w*0.28+'px; width: '+w*0.19+'px; height: '+w*0.47+'px; background-color: blue; }';s+='.pause:after {left: '+w*0.54+'px; }';s+='.pause:hover:before, .pause:hover:after {background-color: yellow; }';s+='</style>';s+='<button id="playBtn" class="btn play" onclick="togglePlay()" ></button>';return s;}
|
||
function togglePlay(){var btn='playBtn';if(my.playQ){my.playQ=false;document.getElementById(btn).classList.add("play");document.getElementById(btn).classList.remove("pause");}else{my.playQ=true;document.getElementById(btn).classList.add("pause");document.getElementById(btn).classList.remove("play");anim();}}
|
||
function anim(){if(my.playQ){requestAnimationFrame(anim);}}
|
||
function getPopHTML(){s='';s+='<style>input[type="radio"]:checked+label {font-weight: bold;}</style>';s+='<div id="editpop" style="position:absolute; left:-450px; top:40px; padding: 5px; border: 1px solid red; border-radius: 9px; background-color: #88aaff; box-shadow: 10px 10px 5px 0px rgba(40,40,40,0.75); z-index:1; transition: all linear 0.3s; opacity:0; font: 14px Arial; ">';var gms=[];for(var i=0;i<my.games.length;i++){gms.push(my.games[i].name);}
|
||
s+=getRadioHTML('','game',gms,'radioClick');s+='<div style="text-align:center;">';s+='<button onclick="editYes()" style="z-index:2; font: 22px Arial;" class="togglebtn" >✔</button>';s+='<button onclick="editNo()" style="z-index:2; font: 22px Arial;" class="togglebtn" >✘</button>';s+='</div>';s+='</div>';return s;}
|
||
function editpop(){console.log("editpop");var pop=document.getElementById('editpop');pop.style.transitionDuration="0.3s";pop.style.opacity=1;pop.style.zIndex=12;pop.style.left='50px';}
|
||
function editYes(){var pop=document.getElementById('editpop');pop.style.opacity=0;pop.style.zIndex=1;pop.style.left='-500px';console.log("editYes",my.fn);my.game=my.games[my.gameRadioN];gameNew();}
|
||
function editNo(){var pop=document.getElementById('editpop');pop.style.opacity=0;pop.style.zIndex=1;pop.style.left='-500px';}
|
||
function gameOverCallback(){console.log("end!");my.gameQ=false;document.getElementById('win').style.visibility='visible';document.getElementById('winscore').innerHTML='Total Score: '+my.score;}
|
||
function gameOverCallback1(){console.log("end!!");my.gameQ=false;g.clearRect(0,0,el.width,el.height);g.textAlign='center';s='Game: '+my.game.name;g.font='36px Arial';g.fillStyle='orange';fancyText(s,w/2,100);s='Total Score: '+my.score;g.font='bold 36px Arial';g.fillStyle='orange';fancyText(s,w/2,145);}
|
||
function Timer(g,rad,secs,clr,funcEnd){this.g=g;this.rad=rad;this.secs=secs;this.clr=clr;this.funcEnd=funcEnd;this.x=rad;this.y=rad;this.stt=performance.now();this.stopQ=false;}
|
||
Timer.prototype.update=function(){var now=performance.now();var elapsed=now-this.stt;};Timer.prototype.restart=function(secs){this.secs=secs;this.stt=performance.now();this.stopQ=false;requestAnimationFrame(this.draw.bind(this));};Timer.prototype.more=function(secs){this.stt+=secs*1000;};Timer.prototype.stop=function(){this.stopQ=true;};Timer.prototype.draw=function(){if(this.stopQ)return;var now=performance.now();var elapsed=now-this.stt;var ratio=Math.min(1,elapsed/this.secs/1000);var g=this.g;g.beginPath();g.fillStyle="#def";g.arc(this.x,this.y,this.rad,0,2*Math.PI);g.fill();g.beginPath();g.moveTo(this.x,this.y);g.fillStyle=this.clr;g.arc(this.x,this.y,this.rad,-Math.PI/2,ratio*2*Math.PI-Math.PI/2);g.fill();if(ratio<1){requestAnimationFrame(this.draw.bind(this));}else{this.funcEnd();}};function drawNumLine(g,lt,tp,min,max,currx,curry){g.clearRect(0,0,el2.width,el2.height);min=my.minAns;max=my.maxAns;coords=new CoordsFull(w-90,200,min,'-10,',max,'10',true);var wd=coords.width;var ticks=getTicks();g.textAlign='center';g.lineWidth=1;var minV=Infinity;var maxV=-Infinity;var zeroPx=-999;for(var i=0;i<ticks.length;i++){var tick=ticks[i];var majorQ=tick[0];var vStr=tick[3];var v=Number(vStr);var xp=lt+tick[2];if(v>maxV)maxV=v;if(v<minV)minV=v;g.font='16px Arial';var clr='black';if(v<0)clr='red';if(v==0){zeroPx=xp;g.font='22px Arial';clr='black';}
|
||
if(v>0)clr='blue';g.strokeStyle=clr;g.fillStyle=clr;var txtY=30;if(vStr.length>5){var lastChr=vStr.replace(/0+$/,'').slice(-1);var evenQ=Number(lastChr)%2==0;if(!evenQ){txtY=50;}}
|
||
var tickHt=1;if(majorQ){g.lineWidth=2;tickHt=12;g.fillText(vStr,xp,tp+txtY);}else{g.lineWidth=1;tickHt=8;}
|
||
g.beginPath();g.moveTo(xp,tp-tickHt);g.lineTo(xp,tp+tickHt);g.stroke();v+=1;}
|
||
if(zeroPx==-999){if(maxV<0)zeroPx=wd;if(minV>0)zeroPx=-1;}
|
||
var lnStt=lt-25;var lnEnd=lt+wd+25;if(zeroPx>lnStt){g.strokeStyle='red';g.drawPipe(lnStt+10,tp,Math.min(zeroPx,lnEnd-10),tp,g.strokeStyle);}
|
||
if(zeroPx<lnEnd){g.strokeStyle='blue';g.drawPipe(Math.max(zeroPx,lnStt+10),tp,lnEnd-10,tp,g.strokeStyle);}
|
||
g.fillStyle=zeroPx>lnStt?'red':'blue';g.beginPath();g.drawArrow(lt-35,tp,30,2,45,25,Math.PI);g.fill();g.fillStyle=zeroPx>lnEnd?'red':'blue';g.beginPath();g.drawArrow(lt+wd+35,tp,30,2,45,25,0);g.fill();if(currx>0&&currx<w){var xVal=numlineVal(currx);var yLn=60;var xStr=Math.round(xVal).toString();if(my.game.dec>0){var fact=Math.pow(10,my.game.dec);xStr=(Math.round(xVal*fact)/fact).toString();}
|
||
g.font='bold 28px Arial';g.textAlign='center';g.fillStyle='black';g.strokeStyle=g.fillStyle;g.fillText(xStr,currx,yLn-38);g.lineWidth=1;g.lineCap='round';crosshairQ=false;if(crosshairQ){var wd=50;yLn=curry;g.strokeStyle='black';g.moveTo(currx-wd/2,yLn);g.lineTo(currx+wd/2,yLn);g.moveTo(currx,yLn-wd/2);g.lineTo(currx,yLn+wd/2);g.stroke();g.beginPath();g.fillStyle='rgba(20,100,255,0.1)';g.arc(currx,yLn,wd/2-5,0,2*Math.PI);g.fill();g.stroke();}else{g.beginPath();g.moveTo(xp,yLn);g.lineTo(xp,yLn-35);g.stroke();g.drawArrow(currx,yLn-25,20,2,25,10,1*Math.PI/2);g.fill();}}
|
||
g.fillStyle='gold';g.strokeStyle=g.fillStyle;g.font='bold 17px Arial';g.lineWidth=2;for(i=0;i<marks.length;i++){var mark=marks[i];var rel=coords.num2Rel(mark[0]);if(rel>0&&rel<1){xp=lt+rel*wd;g.fillText(mark[1],xp,tp-25);g.beginPath();g.moveTo(xp,tp);g.lineTo(xp,tp-20);g.stroke();g.drawArrow(xp,tp,20,2,20,10,3*Math.PI/2);g.fill();}}}
|
||
function getTicks(){var majorTick=coords.xTickInterval(tickSparseness,true);var minorTick=coords.xTickInterval(tickSparseness,false);var minorTickEvery=majorTick.div(minorTick,0).getNumber();var majorNum=majorTick;var minorNum=majorNum.div(new Num(minorTickEvery.toString()),30);var curNum=coords.xStt;curNum=curNum.div(majorNum,0);curNum=curNum.sub(new Num("1"));curNum=curNum.mult(majorNum);var gap=num2pix(minorNum)-num2pix(new Num("0"));var textWd=majorNum.add(minorNum).fmt().length*9;var labelQ=(textWd<gap);var ticks=[];var tickCount=0;while(curNum.compare(coords.xEnd)<=0&&tickCount<100){tickCount++;var tick=curNum.clone();for(var minorTickNo=0;minorTickNo<minorTickEvery;minorTickNo++,tick=tick.add(minorNum)){if(tick.compare(coords.xStt)<0)
|
||
continue;if(tick.compare(coords.xEnd)>0)
|
||
continue;var tickPx=num2pix(tick);ticks.push([minorTickNo==0,minorTickNo,tickPx,tick.fmt(10)]);}
|
||
curNum=curNum.add(majorNum);}
|
||
return ticks;}
|
||
function makeCursor(el,typ,clr){var div=document.createElement('canvas');var ctx=div.getContext('2d');switch(typ){case 'none':break;case 'arrow':var wd=24;div.width=wd;div.height=wd;ctx.strokeStyle=clr;ctx.lineWidth=5;ctx.lineCap='round';ctx.moveTo(2,wd-6);ctx.lineTo(2,2);ctx.lineTo(wd-6,2);ctx.moveTo(2,2);ctx.lineTo(wd,wd);ctx.stroke();break;case 'crosshair':var wd=30;div.width=wd;div.height=wd;ctx.translate(wd/2,wd/2);div.left=(-wd/2);div.style.left=(-wd/2)+'px';ctx.strokeStyle=clr;ctx.lineWidth=1;ctx.lineCap='round';ctx.moveTo(-wd/2,0);ctx.lineTo(wd/2,0);ctx.moveTo(0,-wd/2);ctx.lineTo(0,wd/2);ctx.stroke();break;default:}
|
||
el.style.cursor='url('+div.toDataURL()+'), auto';}
|
||
function dist(dx,dy){return Math.sqrt(dx*dx+dy*dy);}
|
||
function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1)+min);}
|
||
CanvasRenderingContext2D.prototype.drawPipe=function(x0,y0,x1,y1,clr){var g=this;var alpha=[1.00,0.80,0.60,0.40,0.40,0.20,0.40,0.60,1.00];var size=alpha.length;for(var i=0;i<size;i++){for(var j=0;j<2;j++){if(j==0){g.strokeStyle='#ffffff';}else{g.strokeStyle=hex2rgba(clr,alpha[i]);}
|
||
var dist=size/4-i/2;g.beginPath();if(y0==y1){g.moveTo(x0,y0-dist);g.lineTo(x1,y1-dist);}
|
||
if(x0==x1){g.moveTo(x0+dist,y0);g.lineTo(x1+dist,y1);}
|
||
g.stroke();}}};CanvasRenderingContext2D.prototype.drawArrow=function(x0,y0,totLen,shaftHt,headLen,headHt,angle,sweep,invertQ){var g=this;var pts=[[0,0],[-headLen,-headHt/2],[-headLen+sweep,-shaftHt/2],[-totLen,-shaftHt/2],[-totLen,shaftHt/2],[-headLen+sweep,shaftHt/2],[-headLen,headHt/2],[0,0]];if(invertQ){pts.push([0,-headHt/2],[-totLen,-headHt/2],[-totLen,headHt/2],[0,headHt/2]);}
|
||
for(var i=0;i<pts.length;i++){var cosa=Math.cos(-angle);var sina=Math.sin(-angle);var xPos=pts[i][0]*cosa+pts[i][1]*sina;var yPos=pts[i][0]*sina-pts[i][1]*cosa;if(i==0){g.moveTo(x0+xPos,y0+yPos);}else{g.lineTo(x0+xPos,y0+yPos);}}};function CoordsFull(width,height,xStt,yStt,xEnd,yEnd,uniScaleQ){this.maxDigits=30;this.width=width;this.height=height;this.xStt=new Num(xStt.toString());this.yStt=new Num(yStt.toString());this.xEnd=new Num(xEnd.toString());this.yEnd=new Num(yEnd.toString());this.uniScaleQ=uniScaleQ;this.calcScale();}
|
||
CoordsFull.prototype.setCoords=function(xStt,yStt,xEnd,yEnd,uniScaleQ){this.xStt=new Num(xStt.toString());this.yStt=new Num(yStt.toString());this.xEnd=new Num(xEnd.toString());this.yEnd=new Num(yEnd.toString());this.uniScaleQ=uniScaleQ;calcScale();};CoordsFull.prototype.update=function(){calcScale();};CoordsFull.prototype.rel2Num=function(rel){var relNum=new Num(rel.toString());return this.xStt.add(this.xEnd.sub(this.xStt).mult(relNum));};CoordsFull.prototype.num2Rel=function(num){var x0=this.xStt.getNumber();var xv=num.getNumber();var x1=this.xEnd.getNumber();return(xv-x0)/(x1-x0);};CoordsFull.prototype.scale=function(factor,mid){var factNum=new Num((factor-1).toString());var loNum=new Num((0-mid).toString());var hiNum=new Num((1-mid).toString());var rangeNum=this.xEnd.sub(this.xStt);this.xStt=this.xStt.add(rangeNum.mult(factNum).mult(loNum));this.xEnd=this.xEnd.add(rangeNum.mult(factNum).mult(hiNum));this.trimDigits();this.calcScale();};CoordsFull.prototype.moveRel=function(val){var moveNum=this.xEnd.sub(this.xStt).mult(new Num(val.toString()));this.xStt=this.xStt.add(moveNum);this.xEnd=this.xEnd.add(moveNum);this.trimDigits();this.calcScale();};CoordsFull.prototype.trimDigits=function(){this.xStt.trimDigits(this.maxDigits);this.xEnd.trimDigits(this.maxDigits);this.yStt.trimDigits(this.maxDigits);this.yEnd.trimDigits(this.maxDigits);};CoordsFull.prototype.calcScale=function(){var temp=new Num();if(this.xStt.compare(this.xEnd)>0){temp=this.xStt;this.xStt=this.xEnd;this.xEnd=temp;}
|
||
var xSpan=this.xEnd.sub(this.xStt);if(xSpan.compare(new Num("0"))<=0)xSpan.setNum("0.1");xScale=xSpan.div(new Num(this.width.toString()),10);};CoordsFull.prototype.toXVal=function(pix){return(this.xStt.add(xScale.mult(new Num(pix.toString())))).getNumber();};CoordsFull.prototype.toXNum=function(pix){return(this.xStt.add(xScale.mult(new Num(pix.toString()))));};CoordsFull.prototype.xTickInterval=function(tickSparseness,majorQ){return this.tickInterval(this.xEnd.sub(this.xStt).mult(new Num(tickSparseness.toString())),majorQ);};CoordsFull.prototype.yTickInterval=function(tickSparseness,majorQ){return this.tickInterval(this.yEnd.sub(this.yStt).mult(new Num(tickSparseness.toString())),majorQ);};CoordsFull.prototype.tickInterval=function(span,majorQ){var mantissa=span.getSci()[0];var intervals=[[7,10,1],[3,1,1],[2,1,0.5],[1,1,0.1]];for(var i=0;i<intervals.length;i++){var interval=intervals[i];if(mantissa>=interval[0]||i==intervals.length-1){break;}}
|
||
if(majorQ){result=interval[1];}else{result=interval[2];}
|
||
var num=new Num(result.toString());num=num.mult10(span.getSci()[1]+1);return num;};function Num(s,base){s=typeof s!=='undefined'?s:'';base=typeof base!=='undefined'?base:10;this.sign=1;this.digits="";this.dec=0;this.setNum(s,base);}
|
||
Num.prototype.baseDigits="0123456789ABCDEFGHJKLMNP";Num.prototype.MAXDEC=20;Num.prototype.setNum=function(s,base){base=typeof base!=='undefined'?base:10;if(s==0){this.digits='0';return;}
|
||
if(base==10){var digits=s;if(digits.charAt(0)=="-"){this.sign=-1;digits=digits.substring(1);}else{this.sign=1;}
|
||
var eVal=0;var ePos=digits.indexOf("e");if(ePos>=0){eVal=(digits.substr(ePos+1))>>0;digits=digits.substr(0,ePos);}
|
||
this.dec=digits.length-(digits.indexOf(".")+1);if(this.dec==digits.length){this.dec=0;}
|
||
this.dec-=eVal;digits=digits.split(".").join("");digits=digits.replace(/^0+/,'');if(digits.length==0){this.sign=1;}else{var s1="";for(var i=0;i<digits.length;i++){var digit=digits.charAt(i);if(this.baseDigits.indexOf(digit)>=0){s1+=digit;}}
|
||
digits=s1;}
|
||
this.digits=digits;}else{this.setFromBase(s,base);}};Num.prototype.setFromBase=function(numStr,base){var srcSign="";if(numStr.charAt(0)=="-"){srcSign="-";numStr=numStr.substring(1);}
|
||
var baseDec=numStr.length-(numStr.indexOf(".")+1);if(baseDec==numStr.length){baseDec=0;}
|
||
numStr=numStr.split(".").join("");numStr=numStr.replace(/^0+/,'');if(numStr.length==0){this.setNum("0");}else{var i=0;var len=numStr.length;var baseStr=base.toString();var digit=this.baseDigits.indexOf(numStr.charAt(i++).toUpperCase()).toString();var result=digit;while(i<len){digit=this.baseDigits.indexOf(numStr.charAt(i++).toUpperCase()).toString();result=this.fullMultiply(result,baseStr);result=this.fullAdd(result,digit);}
|
||
if(baseDec>0){var divBy=this.fullPower(baseStr,baseDec);result=this.fullDivide(result,divBy,this.MAXDEC);}
|
||
this.setNum(srcSign+result);}};Num.prototype.toBase=function(base,places){var parts=this.splitWholeFrac();var s=this.fullBaseWhole(parts[0],base);if(parts[1].length>0){s+="."+this.fullBaseFrac(parts[1],base,places);}
|
||
if(this.sign==-1){if(s!="0"){s="-"+s;}}
|
||
return s;};Num.prototype.getNumber=function(){return Number(this.fmt(10,0));};Num.prototype.mult10=function(n){var xNew=this.clone();xNew.dec=xNew.dec-n;if(xNew.dec<0){xNew.digits=xNew.digits+"0".repeat(-xNew.dec);xNew.dec=0;}
|
||
return xNew;};Num.prototype.clone=function(){var ansNum=new Num();ansNum.digits=this.digits;ansNum.dec=this.dec;ansNum.sign=this.sign;return ansNum;};Num.prototype.mult=function(num){return this.multNums(this,num);};Num.prototype.fullMultiply=function(x,y){return this.multNums(new Num(x),new Num(y)).fmt();};Num.prototype.multNums=function(xNum,yNum){var N1=xNum.digits;var N2=yNum.digits;var ans="0";for(var i=N1.length-1;i>=0;i--){ans=this.fullAdd(ans,(this.fullMultiply1(N2,N1.charAt(i))+"0".repeat(N1.length-i-1)));}
|
||
var ansNum=new Num(ans);ansNum.dec=xNum.dec+yNum.dec;ansNum.sign=xNum.sign*yNum.sign;return ansNum;};Num.prototype.fullMultiply1=function(x,y1){var carry="0";var ans="";for(var i=x.length-1;i>(-1);i--){var product=((x.charAt(i))>>0)*(y1>>0)+(carry>>0);var prodStr=product.toString();if(product<10){prodStr="0"+prodStr;}
|
||
carry=prodStr.charAt(0);ans=prodStr.charAt(1)+ans;}
|
||
if(carry!="0"){ans=carry+ans;}
|
||
return ans;};Num.prototype.fullMultiplyInt=function(x,y){var xLen=x.length;var yLen=y.length;if(xLen==0)return "0";if(yLen==0)return "0";if(xLen+yLen<=9){return(parseInt(x)*parseInt(y)).toString();}
|
||
var maxLen=Math.max(xLen,yLen);var split=Math.ceil(maxLen/2);if(xLen<yLen){var temp=x;x=y;y=temp;var tInt=xLen;xLen=yLen;yLen=tInt;}
|
||
var xSplit=xLen-split;var x0;var x1;x0=x.substr(xSplit,split);x1=x.substr(0,xSplit);var ySplit=yLen-split;var y0;var y1;var ans="0";if(ySplit<=0){var w2=this.fullMultiplyInt(x0,y);var w1=this.fullMultiplyInt(x1,y);w1=w1+'0'.repeat(split);ans=this.fullAdd(w1,w2);}else{y0=y.substr(ySplit,split);y1=y.substr(0,ySplit);var z0=this.fullMultiplyInt(x1,y1);var z2=this.fullMultiplyInt(x0,y0);var z1=this.fullMultiplyInt(this.fullAdd(x1,x0),this.fullAdd(y1,y0));z1=this.fullSubtract(z1,z2);z1=this.fullSubtract(z1,z0);z0=z0+'0'.repeat(split*2);z1=z1+'0'.repeat(split);ans=this.fullAdd(this.fullAdd(z0,z1),z2);}
|
||
return ans;};Num.prototype.abs=function(){var ansNum=this.clone();ansNum.sign=1;return ansNum;};Num.prototype.fullAdd=function(x,y){return this.addNums(new Num(x),new Num(y)).fmt(10);};Num.prototype.add=function(num){return this.addNums(this,num);};Num.prototype.addNums=function(xNum,yNum){var ansNum=new Num();if(xNum.sign*yNum.sign==-1){ansNum=this.subNums(xNum.abs(),yNum.abs());if(xNum.sign==-1){ansNum.sign*=-1;}
|
||
return ansNum;}
|
||
var maxdec=Math.max(xNum.dec,yNum.dec);var xdig=xNum.digits+"0".repeat(maxdec-xNum.dec);var ydig=yNum.digits+"0".repeat(maxdec-yNum.dec);var maxlen=Math.max(xdig.length,ydig.length);xdig="0".repeat(maxlen-xdig.length)+xdig;ydig="0".repeat(maxlen-ydig.length)+ydig;var ans="";var carry=0;for(var i=xdig.length-1;i>=0;i--){var temp=((xdig.charAt(i))>>0)+((ydig.charAt(i))>>0)+carry;if((temp>=0)&&(temp<20)){if(temp>9){carry=1;ans=temp-10+ans;}else{carry=0;ans=temp+ans;}}}
|
||
if(carry==1){ans="1"+ans;}
|
||
ansNum.setNum(ans);ansNum.sign=xNum.sign;ansNum.dec=maxdec;return ansNum;};Num.prototype.fullPower=function(x,n){return this.expNums(new Num(x),n).fmt();};Num.prototype.expNums=function(xNum,nInt){var n=nInt;var b2pow=0;while((n&1)==0){b2pow++;n>>=1;}
|
||
var x=xNum.digits;var r=x;while((n>>=1)>0){x=this.fullMultiply(x,x);if((n&1)!=0){r=this.fullMultiply(r,x);}}
|
||
while(b2pow-->0){r=this.fullMultiply(r,r);}
|
||
var ansNum=new Num(r);ansNum.dec=xNum.dec*nInt;return ansNum;};Num.prototype.div=function(num,decimals){return this.divNums(this,num,decimals);};Num.prototype.fullDivide=function(x,y,decimals){return this.divNums(new Num(x),new Num(y),decimals).fmt();};Num.prototype.divNums=function(xNum,yNum,decimals){decimals=typeof decimals!=='undefined'?decimals:this.MAXDEC;if(xNum.digits.length==0){return new Num("0");}
|
||
if(yNum.digits.length==0){return new Num("0");}
|
||
var xDec=xNum.mult10(decimals);var fullDec=Math.max(xDec.dec,yNum.dec);var xdig=xDec.digits+"0".repeat(fullDec-xDec.dec);var ydig=yNum.digits+"0".repeat(fullDec-yNum.dec);xdig=xdig.replace(/^0+/,'');if(this.compareDigits(xdig,"0")==0){return new Num("0");}
|
||
ydig=ydig.replace(/^0+/,'');if(this.compareDigits(ydig,"0")==0){return new Num("0");}
|
||
var timestable=[];timestable.push("0");timestable.push(ydig);var tdig=ydig;for(var i=2;i<10;i++){tdig=this.fullAdd(tdig,ydig);timestable.push(tdig);}
|
||
var ans="0";var xNew=xdig;var n=0;while(this.compareDigits(xNew,ydig)>=0){var col=1;while(this.compareDigits(xNew.substring(0,col),ydig)<0){col++;}
|
||
var xCurr=xNew.substring(0,col);var mult=9;while(this.compareDigits(timestable[mult],xCurr)>0){mult--;}
|
||
var fullmult=mult+""+"0".repeat(xNew.length-xCurr.length);ans=this.fullAdd(ans,fullmult);xNew=this.fullSubtract(xNew,this.fullMultiply(ydig,fullmult));if(n++>100){console.log("runaway code divNums");break;}}
|
||
var ansNum=new Num(ans);ansNum.dec=decimals;ansNum.sign=xNum.sign*yNum.sign;return ansNum;};Num.prototype.sub=function(num){return this.subNums(this,num);};Num.prototype.fullSubtract=function(x,y){return this.subNums(new Num(x),new Num(y)).fmt();};Num.prototype.subNums=function(xNum,yNum){var ansNum=new Num();if(xNum.sign*yNum.sign==-1){ansNum=xNum.abs().add(yNum.abs());if(xNum.sign==-1){ansNum.sign*=-1;}
|
||
return ansNum;}
|
||
var maxdec=Math.max(xNum.dec,yNum.dec);var xdig=xNum.digits+"0".repeat(maxdec-xNum.dec);var ydig=yNum.digits+"0".repeat(maxdec-yNum.dec);var maxlen=Math.max(xdig.length,ydig.length);xdig="0".repeat(maxlen-xdig.length)+xdig;ydig="0".repeat(maxlen-ydig.length)+ydig;var sign=this.compareDigits(xdig,ydig);if(sign==0){return new Num("0");}
|
||
if(sign==-1){var temp=xdig;xdig=ydig;ydig=temp;}
|
||
var ans="";var isborrow=0;for(var i=xdig.length-1;i>=0;i--){var xPiece=(xdig.charAt(i))>>0;var yPiece=(ydig.charAt(i))>>0;if(isborrow==1){isborrow=0;xPiece=xPiece-1;}
|
||
if(xPiece<0){xPiece=9;isborrow=1;}
|
||
if(xPiece<yPiece){xPiece=xPiece+10;isborrow=1;}
|
||
ans=(xPiece-yPiece)+ans;}
|
||
ansNum.setNum(ans);ansNum.sign=sign*xNum.sign;ansNum.dec=maxdec;return ansNum;};Num.prototype.fmt=function(sigDigits,eStt){sigDigits=typeof sigDigits!=='undefined'?sigDigits:0;eStt=typeof eStt!=='undefined'?eStt:0;var decWas=this.dec;var digitsWas=this.digits;if(this.digits.length<sigDigits){this.dec+=sigDigits-this.digits.length;this.digits+=strRepeat("0",sigDigits-this.digits.length);}
|
||
var s=this.digits;var decpos=s.length-this.dec;var roundQ=false;var roundType="5up";if(roundQ){if(this.digits.length>sigDigits){var cutDigit="";if(sigDigits>=0){s=this.digits.substr(0,sigDigits);cutDigit=this.digits.charAt(sigDigits);}else{s="";cutDigit="";}
|
||
switch(roundType){case "5up":if(cutDigit>"5"||(cutDigit=="5"&&this.sign==1)){s=this.fullAdd(s,"1",10);}
|
||
break;case "5down":if(cutDigit>"5"||(cutDigit=="5"&&this.sign==-1)){s=fullAdd(s,"1");}
|
||
break;case "5away0":if(cutDigit>="5"){s=fullAdd(s,"1");}
|
||
break;case "5to0":if(cutDigit>"5"){s=fullAdd(s,"1");}
|
||
break;case "5even":if(cutDigit>"5"){s=fullAdd(s,"1");}else{if(cutDigit=="5"){if((parseInt(s.charAt(s.length-1))&1)!=0){s=fullAdd(s,"1");}}}
|
||
break;case "5odd":if(cutDigit>"5"){s=fullAdd(s,"1");}else{if(cutDigit=="5"){if((parseInt(s.charAt(s.length-1))&1)==0){s=fullAdd(s,"1");}}}
|
||
break;case "floor":if(sigDigits<0){decpos-=sigDigits;if(this.sign==-1){s="1";}else{s="";}}else{if(this.sign==-1){if(Strings.trimLeft(digits.substr(sigDigits),"0").length!=0){s=fullAdd(s,"1");}}}
|
||
break;case "ceiling":if(sigDigits<0){decpos-=sigDigits;if(this.sign==1){s="1";}else{s="";}}else{if(this.sign==1){if(Strings.trimLeft(digits.substr(sigDigits),"0").length!=0){s=fullAdd(s,"1");}}}
|
||
break;default:}
|
||
if(s.length>sigDigits){if(sigDigits>0)
|
||
s=s.substr(0,sigDigits);decpos++;}
|
||
if(s.length==0){s="0";}else{if(decpos-sigDigits>0)
|
||
s+="0".repeat(decpos-sigDigits);}}}
|
||
var eVal=decpos-1;if(eStt>0&&Math.abs(eVal)>=eStt){var s1=s.substr(0,1)+"."+s.substr(1);s1=s1.replace(/0+$/,'');if(s1.charAt(s1.length-1)=="."){s1=s1.substr(0,s1.length-1);}
|
||
if(eVal>0){s=s1+"e+"+eVal;}else{s=s1+"e"+eVal;}}else{if(decpos<0){s="0."+"0".repeat(-decpos)+s;}else if(decpos==0){s="0."+s;}else if(decpos>0){if(this.dec>=0){s=s.substr(0,decpos)+"."+s.substr(decpos,this.dec);}else{s=s+"0".repeat(-this.dec)+".";}}
|
||
if(s.indexOf(".")>=0){s=s.replace(/0+$/,'');}
|
||
if(s.charAt(s.length-1)=="."){s=s.substring(0,s.length-1);}}
|
||
if(this.sign==-1){if(s!="0"){s="-"+s;}}
|
||
this.dec=decWas;this.digits=digitsWas;return s;};Num.prototype.compare=function(yNum){return this.compareNums(this,yNum);};Num.prototype.compareNums=function(xNum,yNum){if(xNum.digits.length==0)
|
||
xNum.sign=1;if(xNum.digits=="0")
|
||
xNum.sign=1;if(yNum.digits.length==0)
|
||
yNum.sign=1;if(yNum.digits=="0")
|
||
yNum.sign=1;if(xNum.sign==1&&yNum.sign==-1){return 1;}
|
||
if(xNum.sign==-1&&yNum.sign==1){return-1;}
|
||
var maxdec=Math.max(xNum.dec,yNum.dec);var xdig=xNum.digits+strRepeat("0",maxdec-xNum.dec);var ydig=yNum.digits+strRepeat("0",maxdec-yNum.dec);var maxlen=Math.max(xdig.length,ydig.length);xdig=strRepeat("0",maxlen-xdig.length)+xdig;ydig=strRepeat("0",maxlen-ydig.length)+ydig;for(var i=0;i<xdig.length;i++){if(xdig.charAt(i)<ydig.charAt(i)){return-1*xNum.sign;}
|
||
if(xdig.charAt(i)>ydig.charAt(i)){return 1*xNum.sign;}}
|
||
return 0;};Num.prototype.compareDigits=function(x,y){if(x.length>y.length){return 1;}
|
||
if(x.length<y.length){return-1;}
|
||
for(var i=0;i<x.length;i++){if(x.charAt(i)<y.charAt(i)){return-1;}
|
||
if(x.charAt(i)>y.charAt(i)){return 1;}}
|
||
return 0;};Num.prototype.splitWholeFrac=function(){var s=this.digits;var decpos=s.length-this.dec;if(decpos<0){s="0".repeat(-decpos)+s;decpos=0;}
|
||
if(this.dec<0){s=s+"0".repeat(-this.dec)+".";}
|
||
var wholePart=s.substr(0,decpos);var fracPart=s.substr(decpos);if(fracPart.replace(/^0+/,'').length==0){fracPart="";}else{fracPart="0."+fracPart;}
|
||
return[wholePart,fracPart];};Num.prototype.fullBaseWhole=function(d,base){var baseStr=base.toString();var dWhole=this.fullDivide(d,baseStr,0);var dRem=this.fullSubtract(d,this.fullMultiply(dWhole,baseStr));if(dWhole=="0"){return this.baseDigits.charAt(dRem>>0);}else{return this.fullBaseWhole(dWhole,base)+this.baseDigits.charAt(dRem>>0);}};Num.prototype.fullBaseFrac=function(d,base,places,level){level=typeof level!=='undefined'?level:0;var r=this.fullMultiply(d,base.toString());var parts=r.split(".");var wholePart=parts[0];if(parts.length==1||level>=places-1){return this.baseDigits.charAt(wholePart>>0);}else{var fracPart="0."+parts[1];return this.baseDigits.charAt(wholePart>>0)+this.fullBaseFrac(fracPart,base,places,level+1);}};Num.prototype.getSignStr=function(){if(this.sign==-1){return "-";}else{return "";}};Num.prototype.getWholeStr=function(){var s=this.digits;var decpos=s.length-this.dec;if(decpos<0){s="0".repeat(-decpos)+s;decpos=0;}
|
||
if(this.dec<0){s=s+"0".repeat(-this.dec)+".";}
|
||
return s.substr(0,decpos);};Num.prototype.getDecStr=function(){var s=this.digits;var decpos=s.length-this.dec;if(decpos<0){s="0".repeat(-decpos)+s;decpos=0;}
|
||
if(this.dec<0){s=s+"0".repeat(-this.dec)+".";}
|
||
return s.substr(decpos);};Num.prototype.fullProdSeq=function(n0,n1){if(n0==n1)return n1.toString();var nMid=((n1+n0)/2)<<0;return(this.fullMultiplyInt(this.fullProdSeq(n0,nMid),this.fullProdSeq(nMid+1,n1)));};Num.prototype.getSci=function(){var len=this.digits.length;var s=this.digits.substr(0,1)+"."+this.digits.substr(1);s=s.replace(/0+$/,'');if(s.charAt(s.length-1)=="."){s=s.substr(0,s.length-1);}
|
||
if(this.sign==-1){s="-"+s;}
|
||
return[s,len-this.dec-1];};Num.prototype.fullCombPerm=function(n,r,orderQ,replaceQ){var i=1;var s="";if(orderQ){if(replaceQ){s=this.fullPower(n.toString(),r);}else{if(r>n){s="";}else{s=this.fullProdSeq(n-r+1,n);}}}else{var tops=[];var bots=[];if(replaceQ){if(false){}else{for(i=n;i<=n+r-1;i++){tops.push(i);}
|
||
for(i=2;i<=r;i++){bots.push(i);}}}else{if(r>n){s="";}else{if(r<n-r){for(i=n-r+1;i<=n;i++){tops.push(i);}
|
||
for(i=2;i<=r;i++){bots.push(i);}}else{for(i=n-(n-r)+1;i<=n;i++){tops.push(i);}
|
||
for(i=2;i<=n-r;i++){bots.push(i);}}}}
|
||
cancelFrac(tops,bots);s="1";for(i=0;i<tops.length;i++){s=this.fullMultiplyInt(s,tops[i].toString());}}
|
||
return s;};Num.prototype.trimDigits=function(trimToLen){if(this.digits.length>trimToLen){var origLen=this.digits.length;this.digits=this.digits.substr(0,trimToLen);this.dec-=(origLen-this.digits.length);}};function strRepeat(chr,count){var s="";while(count>0){s+=chr;count-=1;}
|
||
return s;}
|
||
function num2pix(num){return(num.sub(coords.xStt).getNumber()/coords.xEnd.sub(coords.xStt).getNumber()*coords.width);}
|
||
function pix2num(pix){return(coords.xStt.getNumber()+pix/coords.width*(coords.xEnd.getNumber()-coords.xStt.getNumber()));}
|
||
function hex2rgba(hex,opacity){hex=hex.replace('#','');var r=parseInt(hex.substring(0,2),16);var g=parseInt(hex.substring(2,4),16);var b=parseInt(hex.substring(4,6),16);result='rgba('+r+','+g+','+b+','+opacity+')';return result;}
|
||
function fmtDec(v,dec,dropZerosQ){dropZerosQ=typeof dropZerosQ!=='undefined'?dropZerosQ:false;var s=(v/Math.pow(10,dec)).toFixed(dec);if(dropZerosQ){if(s.indexOf(".")>=0){s=s.replace(/0+$/,'');}
|
||
if(s.charAt(s.length-1)=="."){s=s.substring(0,s.length-1);}}
|
||
return s;} |