每个人都试图将角度限制为2 * PI间隔。一些使用 [ - PI,PI] ,而其他人使用 [0,2 * PI] 。进行这样的转换有时会导致出现问题,这些问题来自于使用这些角度的先前值,例如取导数,计算角速度等。人们总是会考虑在上一步中是否进行了上卷或下滚。
但是在我看来这没用。我们应该 NOT 需要将角度限制为 2 * PI 区间,因为它们具有不同的物理意义。在数学中, 3 * PI 不是 PI 。它们仅在某些三角函数下给出相同的结果,但它们确实是不同的角度。
例如,当您使用线圈时,您需要真正的无界角度。我不明白为什么人们试图限制角度并跟踪转弯计数而不是使用精确的无界角。
我搜索了许多论坛,但没有找到合理的解释。
我严格限制某个角度的域名是什么? 在什么区域限制角度会使生活更美好?
顺便提一下,我知道来自计算机体系结构的自然界限大于 2 * PI 。
由于
答案 0 :(得分:1)
首先,我想声明角度被过度使用。当然,在某些情况下,角度可能是最佳表示,但是有很多情况下其他表示更适合(例如方向向量)。大多数这些替代表示都没有角度的困难。
但是,如果您发现自己处于应该使用角度的情况下,可能有几个原因可能会限制角度范围。但正如您已经写过的,这取决于应用程序。
如果角度用于表示方向,则Pi的角度与3 Pi的角度一致(导致相同的方向)。使用固定范围可能会有一些好处:
浮点数据类型在零附近具有更高的精度。如果使用32位浮点数表示累计角度,即1000个完整旋转和一个位,则松散超过尾数的一半以表示实际方向(忽略完全旋转)。在这种情况下,可能需要将整个旋转存储为整数(没有任何损失),并将小数部分存储在浮点数中(损失较少)。
如果它们处于相同的范围内,则比较两个角度(例如,计算它们的相应方向矢量之间的角度)更容易。然后,您只需要处理最多其中一个包装。如果它们处于任意范围内,则必须计算包装其中一个的次数。
如果存在物理约束(例如,对于骨架的关节角度),限制角度的原因应该是显而易见的。
如果角度已经在仅需要缩放和恒定偏移的范围内,则将角度映射到线性量(例如,当您想要绘制图表或映射到颜色时)会更容易。
一般来说,大多数原因都是纯粹的舒适问题。没有边界角度可能会使代码比需要的更加冗长(甚至可能会产生非常小的性能影响)。如果所有这些原因都不适用于您的场景,您可以保持角度不受限制。