Angle difference between two bearings: Difference between revisions

Content added Content deleted
(→‎{{header|Kotlin}}: Updated example see https://github.com/dkandalov/rosettacode-kotlin for details)
Line 535: Line 535:


class Angle(d: Double) {
class Angle(d: Double) {
val value: Double
val value = when {
d in -180.0 .. 180.0 -> d

d > 180.0 -> (d - 180.0) % 360.0 - 180.0
init {
else -> (d + 180.0) % 360.0 + 180.0
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)
operator fun minus(other: Angle) = Angle(this.value - other.value)
}
}


fun main(args: Array<String>) {
fun main(args: Array<String>) {
var anglePairs = arrayOf(
val anglePairs = arrayOf(
20.0 to 45.0,
20.0 to 45.0,
-45.0 to 45.0,
-45.0 to 45.0,
Line 564: Line 560:
)
)
println(" b1 b2 diff")
println(" b1 b2 diff")
var f = "% 12.4f % 12.4f % 12.4f"
val f = "% 12.4f % 12.4f % 12.4f"
for (ap in anglePairs) {
for (ap in anglePairs) {
val diff = Angle(ap.second) - Angle(ap.first)
val diff = Angle(ap.second) - Angle(ap.first)