Arc direction as computed property

This commit is contained in:
Erik Schouten 2022-07-17 15:48:08 +02:00
parent 86fce7ec68
commit 429eefa3f7

View File

@ -35,22 +35,25 @@ public data class Arc(
LEFT, RIGHT LEFT, RIGHT
} }
override val length: Double get() { override val length: Double
val angle: Double = theta(if (direction == Direction.LEFT) start.theta - end.theta else end.theta - start.theta) get() {
val proportion = angle / (2 * PI) val angle: Double =
return circle.circumference * proportion theta(if (direction == Direction.LEFT) start.theta - end.theta else end.theta - start.theta)
} val proportion = angle / (2 * PI)
return circle.circumference * proportion
internal val direction: Direction = if (start.y < circle.center.y) { }
if (start.theta > PI) Direction.RIGHT else Direction.LEFT
} else if (start.y > circle.center.y) { internal val direction: Direction
if (start.theta < PI) Direction.RIGHT else Direction.LEFT get() = if (start.y < circle.center.y) {
} else { if (start.theta > PI) Direction.RIGHT else Direction.LEFT
if (start.theta == 0.0) { } else if (start.y > circle.center.y) {
if (start.x < circle.center.x) Direction.RIGHT else Direction.LEFT if (start.theta < PI) Direction.RIGHT else Direction.LEFT
} else { } else {
if (start.x > circle.center.x) Direction.RIGHT else Direction.LEFT if (start.theta == 0.0) {
if (start.x < circle.center.x) Direction.RIGHT else Direction.LEFT
} else {
if (start.x > circle.center.x) Direction.RIGHT else Direction.LEFT
}
} }
}
} }