如何计算两个轴承之间的最小旋转
Posted
技术标签:
【中文标题】如何计算两个轴承之间的最小旋转【英文标题】:How to compute minimum rotation between two bearings 【发布时间】:2018-02-13 12:55:27 【问题描述】:给定 0 度到 360 度之间的两个轴承 A 和 B,计算 A 到达 B 所需的最小旋转的最有效方法是什么?旋转可以是顺时针(正)或逆时针(负)。最小旋转应该是在绝对度数较小的任何方向上。
例如,
minRotation(30,20) 产生 -10。
minRotation(350,20) 产生 30。
我们如何制定函数 minRotation(A,B)?
【问题讨论】:
【参考方案1】: D = B - A
while D < -180 // use "if" operator when angles are normalized to 0..360 range
D = D + 360
while D > 180
D = D - 360
【讨论】:
有理由选择“while”而不是“if”吗? 是的,我将if
更改为 while
,用于 (-300, 750) 之类的情况。如果您的角度范围已标准化,请使用if
【参考方案2】:
如果您的语言具有与 C 数学库中的剩余 () 函数等效的功能,则
D = remainder( B-A, 360.0)
【讨论】:
您的公式在 minRotation(20,350) 等情况下失败。它应该是 -30 而不是 330。 @Chong 不,在这种情况下,我的公式给出了 -30,从“人余数”中,remainder() 函数计算 x 除以 y 的余数。返回值是 x-n*y,其中 n 是值 x / y,四舍五入到最接近的整数。 “四舍五入到最接近的整数”是关键位。remainder() 不是 fmod()。 我明白了。好久没用C了。我正在使用 javascript。也许您可以显示该功能的链接?无论如何 +1。以上是关于如何计算两个轴承之间的最小旋转的主要内容,如果未能解决你的问题,请参考以下文章