-1
例如,我有一个350度的角度,我想约束它的最大正偏移量为30,最大负偏移量为40.限制范围内的浮动角度的快速方法是什么?
因此,角度值应该是在(310,360)和(0,20)的范围内。如果计算出的角度值为304,则应将角度值约束为310,并且如果计算出的角度值为30,则应将角度值约束为20.
我已经实施了一种方法,但效率不高足够的(大部分努力是在角度值接近360〜0时解决问题)。什么是快速实现这个目标的方法?
功能:
// All values are in the range [0.0f, 360.0f]
// Output: the angle value after constraint.
float _KeepAngleValueBetween(float originalAngle, float currentAngle, float MaxPositiveOffset, float MaxNegativeOffset).
例如:
KeepAngleValueBetween(350.0f, 302.0f, 30.0f, 40.0f)
结果:310.0f
KeepAngleValueBetween(350.0f, 40.0f, 30.0f, 40.0f)
结果:20.0f
KeepAngleValueBetween(140.0f, 190.0f, 45.0f, 40.0f)
结果:185.0f
安置自己的尝试。 –
对不起,我不能。该代码也用于我公司的一个项目中。 @KlasLindbäck –
你仍然需要提供更多细节。输入和预期输出的数据类型和范围。 –