RosettaCodeData/Task/Angle-difference-between-tw.../Factor/angle-difference-between-tw...

27 lines
594 B
Factor

USING: combinators generalizations kernel math prettyprint ;
IN: rosetta-code.bearings
: delta-bearing ( x y -- z )
swap - 360 mod {
{ [ dup 180 > ] [ 360 - ] }
{ [ dup -180 < ] [ 360 + ] }
[ ]
} cond ;
: bearings-demo ( -- )
20 45
-45 45
-85 90
-95 90
-45 125
-45 145
29.4803 -88.6381
-78.3251 -159.036
-70099.74233810938 29840.67437876723
-165313.6666297357 33693.9894517456
1174.8380510598456 -154146.66490124757
60175.77306795546 42213.07192354373
[ delta-bearing . ] 2 12 mnapply ;
MAIN: bearings-demo