# add the variation of the angle to its current angle: trouble with 180 and -180

I need to rotate a character, I would like to add the variation of the angle to its current angle. But my values are between 180 and -180. So if my character is at -179, then he goes right, it arrives at 179. how to compare that it turned by 2 degrees on his right? The goal is to say : "turn only 2 degrees on your right no matter where you are in the world". Same thing from 179 to -179 : 2 degrees to the left.

Thanks

Based on the question, assuming that turning to the right is going a negative angle, and going to the left is going a positive angle.

Here is a small graphical reminder:

To determine what is the difference in the input, you need to constrain the delta to the same range you use:

This is the excel formula I used (row 8, with the "old" value in column A and the "new" value in colum B):

=IF((B8-A8)>180, B8-A8 - 360, IF((B8-A8)<=-180,(B8-A8)+360,B8-A8 ))


This can be translated to pseudo-code:

getInputDelta(oldAngle, newAngle)
delta = newAngle - oldAngle
return constrain180Deg( delta )

// Constraint any angle to the range ]-180, 180]
constrain180Deg(angle)
newAngle = angle

while newAngle > 180
newAngle = newAngle - 360

while newAngle <= -180
newAngle = newAngle + 360

return newAngle

• @Paul I updated the answer. – Vaillancourt Aug 25 '15 at 14:12