需要数学问题的帮助:我需要使用x和y从0度获得真正的角度,此时使用此方法:
Math.atan((x2-x1)/(y1-y2))/(Math.PI/180)
Run Code Online (Sandbox Code Playgroud)
但/(Math.PI/180)限制结果从-90到90我需要0-360
注意:我正在使用角度来指示方向:
jk.*_*jk. 33
atan函数只给出-pi/2和+ pi/2之间的单位圆的一半(x轴上为0),还有另一个库函数可以给出-pi和+ pi之间的整个单位圆,atan2
我认为你最好使用atan2来获得正确的象限而不是自己分支,然后只是像你一样扩展,类似于
Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI + 180
Run Code Online (Sandbox Code Playgroud)
在pi上乘以180只是在问题中从弧度到度数的比例(但是通过简化除法),+180确保它总是正的,即0-360度而不是-180到180度
jil*_*wit 12
Math.atan将您限制在单位圆上最右边的两个象限.要获得完整的0-360度:
if x < 0 add 180 to the angle
else if y < 0 add 360 to the angle.
Run Code Online (Sandbox Code Playgroud)
与我的相比,您的坐标系被旋转和反转(并与常规相比).正x是向右,正y是向上.右边0度(x> 0,y = 0,向上90度(x = 0,y> 0)向上135度,向左(y> 0,x = -y)等.你的x轴和y轴指向?