这是我的问题:
2 个角度,表示为 0 到 360 之间的整数(如果需要,则为 359) 1个从0到1的双倍,代表收敛速度。
我需要编写一个函数,以等于收敛速度的因子将角度拉近。
例如,如果我的会聚率为 0.5 和两个角度:80° 和 40°,则输出应该是一对角度 70° 和 50°(这样它们就位于 60° 会聚角的中间) )。对于这种配置,这是相当明显的,但我很难在一般情况下解决这个问题,因为我在三角学方面非常糟糕,并且在我的职业生涯中从未与角度一起工作过,所以我没有经验。因此,这个函数需要处理任何角度配置,并且会出现问题,因为例如,如果差值 >180,我需要反转运算,因为角度表示为整数,并且我必须使用求和和减法
我需要在 Scala 中实现它,但请随意用 Java、伪代码或任何其他流行语言编写您的建议,我希望将您的代码转换为 Scala 时不会出现问题。
解决方案越轻越好。
最佳答案
原始角度 = o1 o2。
差异 D= o2-o1(注意这是正数,假设 o1 < o2)
中角M= o1 + (D/2)
收敛因子 = F
新角度 = M +- (D/2)*F
如果我是正确的,这就是所需要的。因为角度始终在 0-360 之间,并且假设您只需逆时针方向即可找到中间值和所有值。
关于java - 三角学和角度收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190008/