Javascript 使用HTML5画布绘制极坐标向量?
编辑:已解决。切换了Math.atan2()的Math.asin() 我正在尝试使用JavaScript绘制一个指向画布上某个点的极向量(半径、角度),给定鼠标点击得到的X、Y坐标。这看起来很简单,但到目前为止我还没有让它工作 我所做的: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;
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:我想是这样的,谢谢。