Easy way to keeping angles between -179 and 180 degrees

后端 未结 16 2655
长发绾君心
长发绾君心 2020-12-04 16:41

Is there an easy way to convert an angle (in degrees) to be between -179 and 180? I\'m sure I could use mod (%) and some if statements, but it gets ugly:


/         


        
16条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-04 17:11

    Well, one more solution, this one with just one division and no loops.

    static double normalizeAngle(double angle)
    {
        angle %= 360.0; // [0..360) if angle is positive, (-360..0] if negative
        if (angle > 180.0) // was positive
            return angle - 360.0; // was (180..360) => returning (-180..0)
        if (angle <= -180.0) // was negative
            return angle + 360.0; // was (-360..180] => returning (0..180]
        return angle; // (-180..180]
    }
    

提交回复
热议问题