如何简化R中的角度(以度为单位)?

max*_*eld 5 trigonometry r degrees

我正在构建手动/副手/判断因子旋转功能.

显然,旋转二维坐标系270°与其相同-90°720°相同.

我想简化用户输入,使所有值都在-180°和之间180°.

我怎样才能在R中优雅地做到这一点?

Ps.:或者将值存储到更有意义360°?用户可能要旋转时钟-和逆时针,所以我觉得-180180可能是从一个UX点更直观.

小智 6

就像是?

x <- 90 + c(0,360,720)
x
# [1]  90 450 810

(x*pi/360) %% pi
# in radians:
#[1] 0.7853982 0.7853982 0.7853982

# in degrees
((x*pi/360) %% pi)*360/pi
#[1] 90 90 90
Run Code Online (Sandbox Code Playgroud)


Mha*_*ill 5

您是否只想让所有数字成为余数mod 360?

因此,您可以进行各种求和,并且最终得到的答案在0到360之间。

to_degrees <- function(x) x %% 360 
to_degrees(720)
[1] 0
to_degrees(-90)
[1] 270
to_degrees(300 + 100)
[1] 40
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您希望数字在-180到180之间,则只需在末尾取180。

to_degrees <- function(x) x %% 360 -180

现在

  • 0-> -180

  • 360-> 180。