var w,h,g,my={};function anglesMain(){var version='0.831';console.log('anglesMain',version)
w=300;h=310;var overlay=w*0.1;var win=w-overlay*2;var hin=h-overlay*2;var s="";s+='
';s+='
';s+='
';s+=playHTML(40);s+='
';s+='
';document.write(s);var el=document.getElementById('canvasId');var 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);my.circleX=130;my.circleY=130;my.circleRadius=100;my.currAngle=0.0
my.degrees=0;my.wait=0;my.playQ=false;playToggle();}
function animate(){if(my.wait<0){my.wait++;requestAnimationFrame(animate);return;}
if(!my.playQ)return;my.degrees+=1;if(my.degrees==90)my.wait=-100;if(my.degrees==180)my.wait=-100;my.currAngle=my.degrees*Math.PI/180.0
if(my.degrees==360){my.currAngle=Math.PI*2.0
playToggle();}
g.clearRect(0,0,g.canvas.width,g.canvas.height)
drawRing("circle");drawAngle();requestAnimationFrame(animate);}
function drawAngle(){var angleSnap=Math.floor(angleDeg(my.currAngle,true));var cX=Math.cos(my.currAngle)*my.circleRadius;var cY=-Math.sin(my.currAngle)*my.circleRadius;g.beginPath();g.moveTo(my.circleX+my.circleRadius,my.circleY);g.lineTo(my.circleX,my.circleY);g.lineTo(my.circleX+cX,my.circleY+cY);g.lineWidth=2;g.lineJoin="round";g.strokeStyle="#0000ff";g.stroke();g.closePath();g.font="24px Arial";g.fillStyle="#0000ff";g.textAlign="left";g.fillText(angleSnap.toString()+"°",150,my.circleY-30)
g.textAlign="center";g.fillText(angleName(my.currAngle),my.circleX,my.circleY+my.circleRadius+30)
g.lineWidth=1
g.strokeStyle="#0000ff"
g.beginPath()
switch(angleSnap){case 90:g.drawBox(my.circleX,my.circleY-25,25,0)
break;case 360:g.arc(my.circleX,my.circleY,30,0,Math.PI*2)
break;default:g.arc(my.circleX,my.circleY,30,-my.currAngle,0)}
g.stroke()}
function angleDeg(angleRad,snap90sQ){var angle=angleRad*180.0/Math.PI;if(snap90sQ){if(angle<1||angle>359)
angle=360;if(angle>89&&angle<91)
angle=90;if(angle>179&&angle<181)
angle=180;}
return angle;}
function angleName(angleRad){var s="";var angDeg=angleDeg(angleRad,true);angDeg=Math.floor(angDeg);if(angDeg<90){s="Acute Angle";}
if(angDeg==90){s="Right Angle";}
if(angDeg>90){s="Obtuse Angle";}
if(angDeg==180){s="Straight Angle";}
if(angDeg>180){s="Reflex Angle";}
if(angDeg==360){s="Full Rotation";}
return s;}
function drawRing(ringType){switch(ringType){case "circle":g.beginPath();g.strokeStyle="#884400";g.fillStyle="#ffffff";g.arc(my.circleX,my.circleY,my.circleRadius,0,2*Math.PI);g.shadowColor='rgba(128,55,0,0.7)';g.shadowBlur=my.circleRadius*0.4;g.closePath();g.fill();g.stroke();g.shadowBlur=0;g.shadowOffsetY=0;break;case "compass":g.drawCompass(my.circleX,my.circleY,my.circleRadius-3,6);break;default:}}
function playHTML(w){var s='';s+='';s+='';return s;}
function playToggle(){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;if(my.degrees==360){my.degrees=0;}
document.getElementById(btn).classList.add("pause");document.getElementById(btn).classList.remove("play");animate();}}
CanvasRenderingContext2D.prototype.drawBox=function(midX,midY,radius,angle){var pts=[[0,0],[Math.cos(angle),Math.sin(angle)],[Math.cos(angle)+Math.cos(angle+Math.PI/2),Math.sin(angle)+Math.sin(angle+Math.PI/2)],[Math.cos(angle+Math.PI/2),Math.sin(angle+Math.PI/2)],[0,0]];for(var i=0;i