[SciPy-User] difference of angles - to be between -180 and + 180

Sebastian Haase seb.haase at gmail.com
Wed Nov 18 11:00:19 EST 2009


Hi,

Does anyone have a function that calculates delta-angles taking the
wrap-around at 180 degrees into account ?

I'm thinking of a function like:
>>> diffAngle(190, -10)
160

My current version looks like this:
def diffAngle(a1,a0):
    """
    return a1-a0
    handle wrap-around for -180 and +180
    """
    d = a1-a0
    if d < -180:
        d=360+d
    if d> 180:
        d=360-d
    return d
diffAngle=np.vectorize(diffAngle)


But I'm not sure if this is handling all cases correctly ;-(
Especially I have problems regarding the correct sign - in cases like this:
diffAngle(20, -170) where I was expecting -170 , but I get 170.

Thanks,
Sebastian Haase



More information about the SciPy-User mailing list