34 lines
975 B
Text
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
|