2017-06-12 53 views
1

我想在認識到什麼軸線季度是一個給定的角度 以最有效的方式有效地識別在哪個軸季度是一個給定的角度的角度

區1: 阿爾法> 0 & &阿爾法< = 90 (度)

區2: 阿爾法> 90 & &阿爾法< = 180(度)

區3: 阿爾法> 180 & &阿爾法< = 270(度)

區4: 阿爾法> 270 & &阿爾法< = 360(度)

C++代碼

FORCEINLINE uint8 MapAngleToQuarter(float angle) 
{ 
    angle = (int)angle % 360; 
    float answer = 0; 

    if(angle > 0 && angle <= 90) 
    { 
     answer = 1; 
    } 
    else if(angle > 90 && angle <= 180) 
    { 
     answer = 2; 
    } 
    else if(angle > 180 && angle <= 270) 
    { 
     answer = 3; 
    } 
    else if(angle > 270 && angle <= 360) 
    { 
     answer = 4; 
    } 
    return answer; 
} 

我的問題:是有更好的(更有效的)方法來完成上述任務嗎?

+1

'的α/ 90 + 1'假設阿爾法是整數類型,如果不只是截斷適當。 –

+0

什麼結果如果'阿爾法< 0'或''阿爾法> 360' – chux

+2

@RichardCritten隨着'INT Alpha','(阿爾法 - 1)?/ 90 + 1' – chux

回答

1

隨着在(0 ... 360]的角度範圍

FORCEINLINE uint8 MapAngleToQuarter(float angle) { 
    int a = (int) angle; 
    return (a - 1)/90 + 1; 
} 
+0

謝謝,非常工整清晰:) – ColdSteel

+1

@ColdSteel FYI:'回報(A + 89)/ 90;'是另一種方式,但微優化semlls。 – chux

+0

接受了這個回報'(a + 89)/ 90;'解決方案(少運營) – ColdSteel

相關問題