RosettaCodeData/Task/Angle-difference-between-two-bearings/Ballerina/angle-difference-between-two-bearings.ballerina
2025-06-11 20:16:52 -04:00

34 lines
941 B
Text

import ballerina/io;
function subtract(float b1, float b2) returns float {
float d = (b2 - b1) % 360.0;
if d < -180.0 { d += 360.0; }
if d >= 180.0 { d -= 360.0; }
return d.round(4);
}
public function main() {
float[][] pairs = [
[ 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]
];
io:println("Differences (to 4dp) between these bearings:");
foreach var pair in pairs {
float p0 = pair[0];
float p1 = pair[1];
float diff = subtract(p0, p1);
string offset = p0 < 0.0 ? " " : " ";
io:println(`${offset}${p0} and ${p1} -> ${diff}`);
}
}