/* Angle difference between bearings, in Jsish */ function angleDifference(bearing1:number, bearing2:number):number { var angle = (bearing2 - bearing1) % 360; if (angle < -180) angle += 360; if (angle >= 180) angle -= 360; return angle; } if (Interp.conf('unitTest')) { var dataSet = [[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]]; printf(" Bearing 1 Bearing 2 Difference\n"); for (var i = 0; i < dataSet.length; i++) { printf("%17S° %17S° %17S°\n", dataSet[i][0], dataSet[i][1], angleDifference(dataSet[i][0], dataSet[i][1]) ); } } /* =!EXPECTSTART!= Bearing 1 Bearing 2 Difference 20° 45° 25° -45° 45° 90° -85° 90° 175° -95° 90° -175° -45° 125° 170° -45° 145° -170° 29.4803° -88.6381° -118.1184° -78.3251° -159.036° -80.7109° -70099.7423381094° 29840.6743787672° -139.583283123386° -165313.666629736° 33693.9894517456° -72.3439185186871° 1174.83805105985° -154146.664901248° -161.502952307404° 60175.7730679555° 42213.0719235437° 37.2988555882694° =!EXPECTEND!= */