Javascript 如何在JS中将笛卡尔坐标转换为极坐标?

Javascript 如何在JS中将笛卡尔坐标转换为极坐标?,javascript,math,polar-coordinates,cartesian-coordinates,Javascript,Math,Polar Coordinates,Cartesian Coordinates,我需要知道极坐标系中的旋转角度,使用笛卡尔坐标系中的X和Y 在JS中,如果没有很多IF语句,如何实现这一点?我知道我可以用 但我认为这对性能不利,因为它处于动画周期。Javascript附带了一个内置函数,该函数执行图像中表示的内容:Math.atan2() Math.atan2()将y,x作为参数,并以弧度为单位返回角度 例如: x = 3 y = 4 Math.atan2(y, x) //Notice that y is first! //returns 0.92729521...

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

在JS中,如果没有很多IF语句,如何实现这一点?我知道我可以用


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

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)

这对任何人来说都是一个足够公平的努力,他们会头脑风暴出一个解决方案,直到你有什么东西可以展示出来,如果你已经开始做某事的话。因此,作为一个开始,只需要拿一篇论文,回忆一下你需要的一切,创建一个没有任何编程逻辑的伪代码/算法,然后尝试将其塑造成JS代码。一开始它可能很脏,但以后可以改进。如果可能,您可以在此处转储相关的代码部分,以获得更好的响应。:)@要是我能做就好了。我说我只知道如何使用if结构。我认为这是显而易见的,我不在这里写这个算法。我想知道如何解决这个问题的其他想法,可能是JS中的数学库或类似的东西。是的,
math
object及其方法肯定会有帮助@Rohit416非常感谢
atan2()
绝对是我想要的。优化if语句是毫无意义的,因为
atan
将更加昂贵。这里是我的同一个函数的1行版本:const c2p=pt=>[Math.sqrt(pt[0]**2+pt[1]**2),Math.atan2(pt[1],pt[0]);但是,它也将参数作为数组[x,y],并返回数组[distance,radian]。相反,这里也是我的极坐标到笛卡尔坐标的单线函数:常数p2c=pt=>[pt[0]*Math.cos(pt[1]),pt[0]*Math.sin(pt[1]);斜边函数
斜边(x,y)
可以代替
sqrt(x*x+y*y)