Skip to content

Commit

Permalink
Adds Angle.clamp (#1749)
Browse files Browse the repository at this point in the history
  • Loading branch information
soywiz authored Jul 2, 2023
1 parent 1640d4e commit 294642b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
2 changes: 2 additions & 0 deletions korma/src/commonMain/kotlin/korlibs/math/geom/Angle.kt
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,8 @@ inline fun abs(angle: Angle): Angle = Angle.fromRatio(angle.ratio.absoluteValue)
inline fun min(a: Angle, b: Angle): Angle = Angle.fromRatio(min(a.ratio, b.ratio))
inline fun max(a: Angle, b: Angle): Angle = Angle.fromRatio(max(a.ratio, b.ratio))

fun Angle.clamp(min: Angle, max: Angle): Angle = min(max(this, min), max)

operator fun ClosedRange<Angle>.contains(angle: Angle): Boolean = angle.inBetween(this.start, this.endInclusive, inclusive = true)
operator fun OpenRange<Angle>.contains(angle: Angle): Boolean = angle.inBetween(this.start, this.endExclusive, inclusive = false)
infix fun Angle.until(other: Angle): OpenRange<Angle> = OpenRange(this, other)
Expand Down
11 changes: 11 additions & 0 deletions korma/src/commonTest/kotlin/korlibs/math/geom/AngleTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -221,4 +221,15 @@ class AngleTest {
assertEquals(0.degrees, 360.degrees.normalized)
assertEquals(0.degrees, 720.degrees.normalized)
}

@Test
fun testClamp() {
assertEquals((-30).degrees, (-45).degrees.clamp((-30).degrees, 30.degrees))
assertEquals((-30).degrees, (-30).degrees.clamp((-30).degrees, 30.degrees))
assertEquals((-20).degrees, (-20).degrees.clamp((-30).degrees, 30.degrees))
assertEquals(0.degrees, 0.degrees.clamp((-30).degrees, 30.degrees))
assertEquals(15.degrees, 15.degrees.clamp((-30).degrees, 30.degrees))
assertEquals(30.degrees, 30.degrees.clamp((-30).degrees, 30.degrees))
assertEquals(30.degrees, 45.degrees.clamp((-30).degrees, 30.degrees))
}
}

0 comments on commit 294642b

Please sign in to comment.