ske*_*rit 26 javascript math trigonometry degrees
我正在用javascript/canvas创建一个简单的2D游戏.我需要弄清楚某个物体相对于我的位置的角度.
所以:说我在(10,10)并且物体在(10,5) - 那将导致90度(正Y向下,负Y向上)(10,10)vs(10, 15)将是270度.
我该怎么做?
ken*_*ytm 37
假设你在(a,b),对象在(c,d).然后物体与你的相对位置是(x,y)=(c - a,d - b).
然后你可以使用该Math.atan2()函数以弧度为单位获得角度.
var theta = Math.atan2(-y, x);
Run Code Online (Sandbox Code Playgroud)
请注意,结果在[-π,π]范围内.如果您需要非负数,则必须添加
if (theta < 0)
theta += 2 * Math.PI;
Run Code Online (Sandbox Code Playgroud)
并将弧度转换为度数,乘以180 / Math.PI.
如果您的坐标是(xMe,yMe)并且它们的坐标是(xThem,yThem),那么您可以使用以下公式:
arctan((yMe-yThem)/(xThem-xMe))
通常它是arctan((yThem-yMe)/(xThem-xMe)),但在这种情况下,y轴的符号是相反的.
将结果从弧度转换为度数乘以180/pi.
所以在JavaScript中,这看起来像: Math.atan((yThem-yMe)/(xThem-xMe))*180/Math.PI
atan给出-pi/2和pi/2之间的值(即-90到90度之间).但是你可以查看你的(xThem - xMe,yMe - yThem)矢量所在的象限并进行相应的调整.