RosettaCodeData/Task/Angle-difference-between-two-bearings/Wren/angle-difference-between-two-bearings.wren
2023-07-01 13:44:08 -04:00

30 lines
776 B
Text

var subtract = Fn.new { |b1, b2|
var d = (b2 - b1) % 360
if (d < -180) d = d + 360
if (d >= 180) d = d - 360
return (d * 10000).round / 10000 // to 4dp
}
var 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]
]
System.print("Differences (to 4dp) between these bearings:")
for (pair in pairs) {
var p0 = pair[0]
var p1 = pair[1]
var diff = subtract.call(p0, p1)
var offset = (p0 < 0) ? " " : " "
System.print("%(offset)%(p0) and %(p1) -> %(diff)")
}