-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 –
你仍然需要提供更多細節。輸入和預期輸出的數據類型和範圍。 –