Replace the custom mod function with Kotlin's built-in mod extension.

This commit is contained in:
Edwin Jakobs
2025-02-01 13:53:29 +01:00
parent b86f3a9d02
commit 426e35ebd0
4 changed files with 9 additions and 9 deletions

View File

@@ -91,7 +91,7 @@ internal class ExpressionListener(
KeyLangParser.Tokens.MINUS -> left - right KeyLangParser.Tokens.MINUS -> left - right
KeyLangParser.Tokens.ASTERISK -> left * right KeyLangParser.Tokens.ASTERISK -> left * right
KeyLangParser.Tokens.DIVISION -> left / right KeyLangParser.Tokens.DIVISION -> left / right
KeyLangParser.Tokens.PERCENTAGE -> mod(left, right) KeyLangParser.Tokens.PERCENTAGE -> left.mod(right)
else -> error("operator '$operator' not implemented") else -> error("operator '$operator' not implemented")
} }
doubleStack.push(result) doubleStack.push(result)

View File

@@ -137,8 +137,8 @@ fun extrudeShape(
val points = it val points = it
val normals = (points.indices).map { index -> val normals = (points.indices).map { index ->
val a = mod(index + 1, points.size) val a = (index + 1).mod(points.size)
val b = mod(index - 1, points.size) val b = (index - 1).mod(points.size)
(points[a] - points[b]).safeNormalized * -flip (points[a] - points[b]).safeNormalized * -flip
} }
val forward = Vector3(0.0, 0.0, depth) val forward = Vector3(0.0, 0.0, depth)

View File

@@ -83,7 +83,7 @@ class CatmullRomChain1(points: List<Double>, alpha: Double = 0.5, val loop: Bool
} }
fun position(rt: Double): Double { fun position(rt: Double): Double {
val st = if (loop) mod(rt, 1.0) else rt.coerceIn(0.0, 1.0) val st = if (loop) rt.mod(1.0) else rt.coerceIn(0.0, 1.0)
val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt() val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt()
val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex
return segments[segmentIndex].position(t) return segments[segmentIndex].position(t)
@@ -178,7 +178,7 @@ class CatmullRomChain2(points: List<Vector2>, alpha: Double = 0.5, val loop: Boo
} }
fun position(rt: Double): Vector2 { fun position(rt: Double): Vector2 {
val st = if (loop) mod(rt, 1.0) else rt.coerceIn(0.0, 1.0) val st = if (loop) rt.mod(1.0) else rt.coerceIn(0.0, 1.0)
val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt() val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt()
val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex
return segments[segmentIndex].position(t) return segments[segmentIndex].position(t)
@@ -273,7 +273,7 @@ class CatmullRomChain3(points: List<Vector3>, alpha: Double = 0.5, val loop: Boo
} }
fun position(rt: Double): Vector3 { fun position(rt: Double): Vector3 {
val st = if (loop) mod(rt, 1.0) else rt.coerceIn(0.0, 1.0) val st = if (loop) rt.mod(1.0) else rt.coerceIn(0.0, 1.0)
val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt() val segmentIndex = (kotlin.math.min(almostOne, st) * segments.size).toInt()
val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex val t = (kotlin.math.min(almostOne, st) * segments.size) - segmentIndex
return segments[segmentIndex].position(t) return segments[segmentIndex].position(t)

View File

@@ -43,7 +43,7 @@ class LFO(wave: LFOWave = LFOWave.Saw) : TimeTools {
fun saw(frequency: Double = 1.0, phase: Double = 0.0): Double { fun saw(frequency: Double = 1.0, phase: Double = 0.0): Double {
val cycleFreq = 1.0 / frequency val cycleFreq = 1.0 / frequency
val cycleTime = mod(time + (phase * frequency), cycleFreq) val cycleTime = (time + (phase * frequency)).mod(cycleFreq)
current = (cycleTime) / cycleFreq current = (cycleTime) / cycleFreq
return current return current
} }
@@ -60,7 +60,7 @@ class LFO(wave: LFOWave = LFOWave.Saw) : TimeTools {
fun triangle(frequency: Double = 1.0, phase: Double = 0.0): Double { fun triangle(frequency: Double = 1.0, phase: Double = 0.0): Double {
val t = (time * frequency) + (phase * frequency) val t = (time * frequency) + (phase * frequency)
current = 1.0 - 2.0 * abs(mod(t, 1.0) - 0.5) current = 1.0 - 2.0 * abs(t.mod(1.0) - 0.5)
return current return current
} }
} }