这是一个我与它斗争了一段时间但找不到好的答案的问题。我最终确实在 R 中解决了它,但我想无论如何我都会发布它以防其他人需要它。如果有人有更优雅的解决方案,我很乐意看到它。这是一种蛮力的努力。
我有一系列成对的 XY(笛卡尔)坐标。我可以使用简单的 atan() 命令轻松获得它们之间的角度。但是,我想要指南针(极地?基数?)方向(北=0°,东=90°,等等)的角度。这是制作数据和笛卡尔角度的最小示例,我在下面发布了我的蛮力转换为罗盘角度。度数转换(从弧度)使用“圆形”包中的 deg()。
require(circular)
test <- data.frame(x=c(0,1,1,1,0,-1,-1,-1),y=c(1,1,0,-1,-1,-1,0,1))
test$angle <- deg(atan(test$y/test$x))
test
...产生
x y angle
1 0 1 90
2 1 1 45
3 1 0 0
4 1 -1 -45
5 0 -1 -90
6 -1 -1 45
7 -1 0 0
8 -1 1 -45
请注意,进入左下和左上象限的角度与进入右下和右上象限的角度相同,失去了向量的方向性。