9

我需要使用笛卡尔坐标中的 X 和 Y 知道极坐标中的旋转角度。

在没有大量 IF 语句的情况下,如何在 JS 中做到这一点?我知道我可以使用这个系统,

但我认为这对性能不利,因为它处于动画周期。

4

1 回答 1

19

Javascript 带有一个内置函数,可以执行图像中表示的操作:Math.atan2()

Math.atan2()接受y, x作为参数并以弧度返回角度。

例如:

x = 3
y = 4    
Math.atan2(y, x) //Notice that y is first!

//returns 0.92729521... radians, which is 53.1301... degrees

我编写了这个函数来将笛卡尔坐标转换为极坐标,返回距离和角度(以弧度为单位):

function cartesian2Polar(x, y){
    distance = Math.sqrt(x*x + y*y)
    radians = Math.atan2(y,x) //This takes y first
    polarCoor = { distance:distance, radians:radians }
    return polarCoor
}

您可以像这样使用它来获得以弧度表示的角度:

cartesian2Polar(5,5).radians

最后,如果你需要度数,你可以像这样将弧度转换为度数

degrees = radians * (180/Math.PI)
于 2015-10-09T17:19:59.350 回答