给定坐标周围 -PI -> PI 范围内的 2 个角度,它们之间的 2 个角度中最小的值是多少?
考虑到 PI 和 -PI 之间的差异不是 2 PI 而是零。
例子:
想象一个圆,有 2 条线从中心出来,这些线之间有 2 个角度,它们在内侧形成的角度称为 较小的角度 ,而它们在外侧形成的角度也称为较大的角度。两个角加起来就是一个完整的圆。假设每个角度都可以在一定范围内拟合, 那么较小的角度值是多少,考虑到翻转
这给出了任何角度的有符号角度:
a = targetA - sourceA a = (a + 180) % 360 - 180
请注意,在许多语言中,该modulo操作返回一个与被除数符号相同的值(如 C、C++、C#、JavaScript,此处为完整列表)。这需要一个自定义mod函数,如下所示:
modulo
mod
mod = (a, n) -> a - floor(a/n) * n
或者:
mod = (a, n) -> (a % n + n) % n
如果角度在 [-180, 180] 范围内,这也有效:
a = targetA - sourceA a += (a>180) ? -360 : (a<-180) ? 360 : 0
以更详细的方式:
a = targetA - sourceA a -= 360 if a > 180 a += 360 if a < -180