Angle difference between two bearings: Difference between revisions
Content added Content deleted
(Go solution) |
(Added Kotlin) |
||
Line 530: | Line 530: | ||
-45° + 125° -> 170.0° |
-45° + 125° -> 170.0° |
||
-45° + 145° -> -170.0°</pre> |
-45° + 145° -> -170.0°</pre> |
||
=={{header|Kotlin}}== |
|||
<lang scala>// version 1.1.2 |
|||
class Angle(d: Double) { |
|||
val value: Double |
|||
init { |
|||
value = when { |
|||
d in -180.0 .. 180.0 -> d |
|||
d > 180.0 -> (d - 180.0) % 360.0 - 180.0 |
|||
else -> (d + 180.0) % 360.0 + 180.0 |
|||
} |
|||
} |
|||
operator fun minus(other: Angle) = Angle(this.value - other.value) |
|||
} |
|||
fun main(args: Array<String>) { |
|||
var anglePairs = arrayOf( |
|||
20.0 to 45.0, |
|||
-45.0 to 45.0, |
|||
-85.0 to 90.0, |
|||
-95.0 to 90.0, |
|||
-45.0 to 125.0, |
|||
-45.0 to 145.0, |
|||
29.4803 to -88.6381, |
|||
-78.3251 to -159.036, |
|||
-70099.74233810938 to 29840.67437876723, |
|||
-165313.6666297357 to 33693.9894517456, |
|||
1174.8380510598456 to -154146.66490124757, |
|||
60175.77306795546 to 42213.07192354373 |
|||
) |
|||
println(" b1 b2 diff") |
|||
var f = "% 12.4f % 12.4f % 12.4f" |
|||
for (ap in anglePairs) { |
|||
val diff = Angle(ap.second) - Angle(ap.first) |
|||
println(f.format(ap.first, ap.second, diff.value)) |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
b1 b2 diff |
|||
20.0000 45.0000 25.0000 |
|||
-45.0000 45.0000 90.0000 |
|||
-85.0000 90.0000 175.0000 |
|||
-95.0000 90.0000 -175.0000 |
|||
-45.0000 125.0000 170.0000 |
|||
-45.0000 145.0000 -170.0000 |
|||
29.4803 -88.6381 -118.1184 |
|||
-78.3251 -159.0360 -80.7109 |
|||
-70099.7423 29840.6744 -139.5833 |
|||
-165313.6666 33693.9895 -72.3439 |
|||
1174.8381 -154146.6649 -161.5030 |
|||
60175.7731 42213.0719 37.2989 |
|||
</pre> |
|||
=={{header|Perl 6}}== |
=={{header|Perl 6}}== |