Angle difference between two bearings

47 views (last 30 days)
How do I find the minimum angle difference between two angles A & B, for example:
if A = -175, B = 175 -> difference would be 10
if A = 355, B = 5 -> difference would be 10
if A = 720, B = 360 -> difference would be 0
All I know is that I have to use the absolute and modulus functions somewhere
Would appreciate any help.

Accepted Answer

Basil C.
Basil C. on 11 Mar 2021
Read about principal angles...
For the 1st case:
A=-175 whose principal angle is 185 degree
A - B = 185 - 175 = 10 degrees
You can similarly solve the for the remaining cases
Shikhar Singh
Shikhar Singh on 11 Mar 2021
How would this work for an angle like 1060 then?

Sign in to comment.

More Answers (1)

Basil C.
Basil C. on 12 Mar 2021
Edited: Basil C. on 12 Mar 2021
To convert any angle to its principal angle
function y = prin_angle(x)
y=rem(x,360); % returns the remainder when dividing by 360
if y<0
Just pass both angles to above function individually to obtain the principal angle, then subtract the two outputs
Just use the following code and pass both A and B directly:
function y = get_difference(A,B)
y=rem(B-A,360); % returns the remainder when dividing by 360
if y<-180
elseif y>180
P.S.: I have just converted the java code from above into matlab code
cem polat
cem polat on 20 Jan 2022
Use anglediff function in Communications or Robotics toolbox. Since anglediff uses radians, you can use a function like below for the angle diff in degrees:
function result = angdiffdeg(from, to)
result = rad2deg(angdiff(deg2rad(from),deg2rad(to)));

Sign in to comment.


Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!