Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HTML5画布绘制极坐标向量?_Javascript_Canvas - Fatal编程技术网

Javascript 使用HTML5画布绘制极坐标向量?

Javascript 使用HTML5画布绘制极坐标向量?,javascript,canvas,Javascript,Canvas,编辑:已解决。切换了Math.atan2()的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;

编辑:已解决。切换了Math.atan2()的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)到单击的任何位置,逆时针方向(角度=θ)。但事实并非如此。drawAxes()、drawVec()和getMousePos()都是直截了当的,可以正常工作,所以我没有包括它们


谢谢

A表示距离,而不是角度。你需要使用Math.atan2(diffY,diffX)来获得角度。你能提供一个吗?@Ken Fyrstenberg:我想是这样的,谢谢。