看看这里的例子:http://www.brianhare.com/physics/so.html笛卡尔坐标到极坐标
在那里我使用的这两个主要功能看看的console.log:
function distanceBetween2pts(x1, y1, x2, y2) {
console.log("Particle: ("+x1+","+y1+") Mouse: ("+x2+","+y2+")");
// Pythagoras Theorem
// PQ = sqrt((x2-x1)^2 + (y2-y1)^2)
var x = (x2-x1);
var y = (y2-y1);
this.radius = Math.sqrt(x*x + y*y);
this.x = x;
this.y = y;
}
function polar2cartesian(R, theta) {
this.x = R * Math.cos(theta);
this.y= R * Math.sin(theta);
}
当鼠标上面和在哪里到颗粒(中心圆)的右边,如:
控制台日志显示:
Particle: (300,250) Mouse: (326,223)
artan(-27/26) = angle: -46.08092418666069 - theta -0.8042638494191191
它应该是arctan(27/26)=角度:46:θ= 0.8。因为即使鼠标位于中心的“上方”,它也会读取y2-y1为-27,因为坐标系统基于大约0,0左上角。
问题是,当X和Y都是负值时,θ应该指向相反的方向(从中心点向外)。我知道我可以在这里做一个180度的技巧,但我想明白我做错了什么。
原因当两个y和x是否定的,将它们导致的正数(这是对应的角度的tagent,并且当角正切是肯定的,则角度本身是正的。 – 2012-01-17 17:13:17
有许多你可以传递给三角函数的值(sin,cos,tan),它们会给出相同的值,对于sin的明显的是0,Pi,2 * pi,3 * pi等。它们只给出一定范围内的唯一值例如,对于sin其-Pi/2到+ pi/2)这意味着当做反向trig函数以回到原始函数时,除非你也大致知道trig函数的结果,否则trig函数的结果是无用的。你确定的方式是使用x和y的符号来确定它的第一个象限,从而确定你是否需要增加,减少或者其他来获得正确的角度。 – Chris 2012-01-17 17:31:56