based on @Pascal's answer, here is a slightly extended version that (clumsy?) converts angles to a range from -180°to 180°(for UX reasons):
simplify.angle <- function (angle.raw) {
angle.360 <- ((angle.raw*pi/360) %% pi)*360/pi
if (angle.360 > 180) {
angle.simple <- angle.360 - 360
} else if (angle.360 < -180) {
angle.simple <- angle.360 + 360
} else {
angle.simple <- angle.360
}
return(angle.simple)
}
This gives:
> sapply(c(-90, 270, 630, -450, -181), simplify.angle)
[1] -90 -90 -90 -90 179
source
share