<html>
<head>
<script>
function draw() {
var canvas = document.getElementById('draw');
if (canvas.getContext) {
var ctx = canvas.getContext('2d');
var ang=prompt("Degree?")
var sin=Math.sin(ang * Math.PI/180);var cos=Math.cos(ang * Math.PI/180);var tan=Math.tan(ang * Math.PI/180);
if (ang == 45) {tan = 1}
ctx.beginPath()
ctx.font = "18px Calibri";
ctx.fillStyle = "Black";
ctx.fillText("k", 5, 150);
ctx.moveTo(20,20)
ctx.lineTo(20,220)
ctx.lineTo(20+(200*tan),220);
ctx.closePath()
ctx.stroke()
ctx.beginPath()
ctx.moveTo(20,210)
if (ang <= 20){
ctx.lineTo(20+(30*tan),210)
ctx.lineTo(20+(30*tan),220)}
else if(ang <= 45){
ctx.lineTo(20+(10*tan),210)
ctx.lineTo(20+(10*tan),220)}
else {ctx.lineTo(30,210)
ctx.lineTo(30,220)}
ctx.arc(20,20,30,Math.PI/2,Math.PI/2-(ang*Math.PI/180),true)
ctx.stroke()
ctx.fillText(tan+"k", 47, 240);
if (ang <= 20) {ctx.fillText(Math.sqrt(tan*tan+1)+"k",30, Math.sqrt(tan*tan+1)/2+60);}
else if (ang <= 55) {ctx.fillText(Math.sqrt(tan*tan+1)+"k",100, Math.sqrt(tan*tan+1)/2+60)}
else if (ang <= 77) {ctx.fillText(Math.sqrt(tan*tan+1)+"k",150, Math.sqrt(tan*tan+1)/2+40)}
else {ctx.fillText(Math.sqrt(tan*tan+1)+"k",100, Math.sqrt(tan*tan+1)/2+20)}
ctx.font = "14px Calibri";
ctx.fillText(ang+"\u00B0", 10, 10);
ctx.font = "25px Calibri";
ctx.fillText("sin"+ang+"\u00B0 : "+sin, 20, 280);
ctx.fillText("cos"+ang+"\u00B0 : "+cos, 20, 310);
ctx.fillText("tan"+ang+"\u00B0 : "+tan, 20, 340);
ctx.fillText("cosec"+ang+"\u00B0 : "+1/sin, 20, 370);
ctx.fillText("sec"+ang+"\u00B0 : "+1/cos, 20, 400);
ctx.fillText("cot"+ang+"\u00B0 : "+1/tan, 20, 430);
} else {
document.write("Hey idiot, whhich iidiot brrowserr you are using? No IE clan here!");
}
}
</script>
</head>
<body onload="draw();">
<canvas id="draw" width="600" height="600"></canvas>
</body></html>
1)为什么会出现额外的线[靠近k线,非直线,角点附近的端点]?我很确定这是因为我用arc()
方法来显示角度?如何以最简单的方式消除这种情况?
2)首先,任何人都可以确认正在制作的三角形是正确的。其次我有一些问题,如45degree显示0.999999 ...不是1.如何解决?
答案 0 :(得分:1)
要修复额外的行,请添加:
ctx.moveTo(20,50);
在:
ctx.arc(20,20,30,Math.PI/2,Math.PI/2-(ang*Math.PI/180),true);
<强> Working example 强>
(您正在从“直角”符号的末尾绘制一条直线到圆弧的起点)
三角似乎是正确构造的,45度角会返回一个高宽的三角形,就像它应该的那样。我没有看到你提到的0.9999999
。