Algorithm Request: Comparison against a range that wraps


Author Message
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6541
Posted: 05:08am 25 Jun 2021      

The simplest is
diff = (new_angle-old_angle + 360) mod 360


You will have to decide if you want negative results or all positive. It depends on the usage.

MOD gives integer results so either multiply by 10 then MOD then divide by 10 etc or use another way to do MOD

dim float old_angle, new_angle, diff
do
input "both angles:", old_angle,new_angle
diff = (new_angle-old_angle + 360) mod 360 ' MOD gives integer results
print diff
diff = new_angle-old_angle + 360
if diff >= 360 then diff = diff - 360
print diff
print
loop


edit:
diff = (((new_angle-old_angle)*10 + 3600+1800) mod 3600)/10-180 ' 1 decimal place and negatives


Jim
Edited 2021-06-25 15:56 by TassyJim