编辑:已解决。 Math.atan2()的Switched Math.asin()。
我尝试使用JavaScript绘制极地矢量(半径,角度)到画布上的点,给定通过鼠标点击获得的X,Y坐标。这看起来很简单,但到目前为止我还没有让它起作用。
我做了什么:
window.onload=init();
var canv, ctx, H, W;
var A, th;
function clickAction(e) {
var pos=getMousePos(e);
var x=pos.x;
var y=pos.y;
var A=Math.sqrt(x*x+y*y);
var th=Math.asin(-y/A)*(180/Math.PI);
drawVec(x,y); //draws a line to (x,y) from center
ctx.beginPath();
ctx.arc(0,0,50,0,th); ctx.stroke();
console.log(x,y, th);
}
function init() {
canv=document.getElementById("canv");
ctx=canv.getContext('2d');
H=canv.height; W=canv.width;
ctx.translate(W/2, H/2);
drawAxes();
canv.addEventListener('mousedown', clickAction);
}
弧应该从x轴(角度= 0)到你点击的任何地方,逆时针(角度= theta)。但事实并非如此。 drawAxes(),drawVec()和getMousePos()是直截了当的,所以我没有包含它们。
感谢。