如何解决如何找到两个角度之间的差异??

这给出了任何角度的有符号角度:

a = targetA - sourceA
a = (a + 180) % 360 - 180

请注意,在许多语言中,该modulo操作返回一个与被除数符号相同的值(如
C、C++、C#、JavaScript,此处为完整列表)。这需要一个自定义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

解决方法

给定坐标周围 -PI -> PI 范围内的 2 个角度,它们之间的 2 个角度中最小的值是多少?

考虑到 PI 和 -PI 之间的差异不是 2 PI 而是零。

例子:

想象一个圆,有 2 条线从中心出来,这些线之间有 2 个角度,它们在内侧形成的角度称为 较小的角度
,而它们在外侧形成的角度也称为较大的角度。两个角加起来就是一个完整的圆。假设每个角度都可以在一定范围内拟合, 那么较小的角度值是多少,考虑到翻转