如何解决如何找到两个角度之间的差异??
这给出了任何角度的有符号角度:
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 个角度,它们在内侧形成的角度称为 较小的角度
,而它们在外侧形成的角度也称为较大的角度。两个角加起来就是一个完整的圆。假设每个角度都可以在一定范围内拟合, 那么较小的角度值是多少,考虑到翻转
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。