RosettaCodeData/Task/Angle-difference-between-two-bearings/Maxima/angle-difference-between-two-bearings.maxima
2026-04-30 12:34:36 -04:00

16 lines
525 B
Text

diff_bearing(b1, b2) := block(
r: mod(b2-b1, 360),
if r>180 then r-360 else r)$
test_bearings: [[20, 45], [-45, 45], [-85, 90],
[-95, 90], [-45, 125], [-45, 145],
[29.4803, -88.6381], [-78.3251, -159.036]]$
big_bearings: [[-70099.74233810938, 29840.67437876723],
[-165313.6666297357, 33693.9894517456],
[1174.8380510598456, -154146.66490124757],
[60175.77306795546, 42213.07192354373]]$
db_unary(list) := map(lambda([l], apply(diff_bearing, l)), list)$
db_unary(test_bearings);
db_unary(big_bearings);