找到角度0-360

Joh*_*all 12 javascript

需要数学问题的帮助:我需要使用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

注意:我正在使用角度来指示方向:

  • 0 =上
  • 90 =右
  • 135 = 45度右+下
  • 180 =下
  • 270 =左
  • 等等

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轴指向?