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

41 lines
1.7 KiB
Plaintext

/* 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!=
*/