| Posted: 05:55pm 25 Jun 2021 |
|
|
|
There's some awesome ideas!
Jiri's version seems to be the hardest to break - I haven't been able to. I split it into 2 lines to simplify it slightly. Phill's only works within the window. (Which suits my request.) His can't return an arbitrary difference. TassyJim's only works 'forwards'. (359,1 is OK, 1,359 is not)
The neat thing is that all three have an underlying similarity. Plus they are more elegant than my brute force IF EVERYTHING method.
Thanks!
dim float old_angle, new_angle, diff dim window = 10 do input "both angles:", old_angle,new_angle
print "Phill99" if (new_angle >= 360-window) AND (old_angle < window) then new_angle = new_angle - 360 if (old_angle >= 360-window) AND (new_angle < window) then old_angle = old_angle - 360 diff = abs(new_angle - old_angle) print diff print
print "TassyJim" diff = new_angle-old_angle + 360 if diff >= 360 then diff = diff - 360 print diff print
print "Jiri" diff = max(old_angle,new_angle)-min(old_angle,new_angle) diff = min(diff, 360-diff) print diff print
loop
Edit: might be able to simplify Jiri's some more:
diff = abs(old_angle - new_angle) diff = min(diff, 360-diff)
Edited 2021-06-26 04:01 by vegipete |