R 将x和y转换为以弧度为单位的角度

R 将x和y转换为以弧度为单位的角度,r,coordinates,trigonometry,angle,points,R,Coordinates,Trigonometry,Angle,Points,我使用以下代码创建一个具有随机ρ和θ的点: set.seed(1) rho <- sqrt(runif(1, 0.0, 1.0)) theta <- runif(1, 0, 2*pi) 其结果与rho相同,但是 a<-atan(y/x) a最好使用atan2 atan2(y, x) #[1] 2.338364 它(几乎)等于θ 你有x

我使用以下代码创建一个具有随机ρ和θ的点:

set.seed(1)
rho <- sqrt(runif(1, 0.0, 1.0))
theta <- runif(1, 0, 2*pi)
其结果与rho相同,但是

   a<-atan(y/x)

a最好使用
atan2

atan2(y, x)
#[1] 2.338364
它(几乎)等于θ


你有
x<0
y/x=-1.036811<0
。现在,这意味着θ只能在第二象限或第四象限

tan(-z)=-tan(z)=tan(2*pi-z)=tan(pi-z)=w
,然后
-z
pi-z
2*pi-z
都等于
atan(w)
,解在
z
中不是唯一的

atan(y/x)
#[1] -0.8034692 
-0.8034692是一种解决方法

pi+atan(y/x)
#[1] 2.338123

这些都是解决方案

c(tan(atan(y/x)), tan(pi+atan(y/x)), tan(2*pi+atan(y/x)))
# [1] -1.036811 -1.036811 -1.036811

如果我们有兴趣找到解决方案
0,则函数tangens的周期为
pi
。因此,您必须检查
x
y
的符号,以找出该点的象限。这是一个数学(或逻辑)问题。你的意思是检查它们是正的还是负的?在这些情况下如何做?
2*pi+atan(y/x)
#[1] 5.479716
c(tan(atan(y/x)), tan(pi+atan(y/x)), tan(2*pi+atan(y/x)))
# [1] -1.036811 -1.036811 -1.036811