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

34 lines
975 B
Text

# Angle difference between two bearings
proc getdiff(b1, b2) is
r := (b2 - b1) symmod 360.0;
if r >= 180.0 then r -:= 360.0 fi;
if r < -180.0 then r +:= 360.0 fi;
return r
end;
proc printrow(b1, b2) is
printf("%14.6f %14.6f %14.6f\n", b1, b2, getdiff(b1, b2))
end;
scope
print("Input in -180 to +180 range");
print(" Bearing 1 Bearing 2 Difference");
printrow(20.0, 45.0);
printrow(-45.0, 45.0);
printrow(-85.0, 90.0);
printrow(-95.0, 90.0);
printrow(-45.0, 125.0);
printrow(-45.0, 145.0);
printrow(-45.0, 125.0);
printrow(-45.0, 145.0);
printrow(29.4803, -88.6381);
printrow(-78.3251, -159.036);
print();
print("Input in wider range");
print(" Bearing 1 Bearing 2 Difference");
printrow(-70099.74233810938, 29840.67437876723);
printrow(-165313.6666297357, 33693.9894517456);
printrow(1174.8380510598456, -154146.66490124757);
printrow(60175.77306795546, 42213.07192354373)
epocs