Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix bug in orx-keyframer and add default parameter values for easing functions #198

Merged
merged 2 commits into from
Oct 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions orx-easing/src/commonMain/kotlin/Easing.kt
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ fun easeCircInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0):
return c / 2 * (sqrt(1 - td2 * td2) + 1) + b
}

fun easeCircOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeCircOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / d - 1
return c * sqrt(1 - td * td) + b
}
Expand All @@ -154,7 +154,7 @@ fun easeCubicInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0)

// -- elastic

fun easeElasticIn(t: Double, b: Double, c: Double, d: Double): Double {
fun easeElasticIn(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
if (t == 0.0) {
return b
} else if (t / d == 1.0) {
Expand All @@ -168,7 +168,7 @@ fun easeElasticIn(t: Double, b: Double, c: Double, d: Double): Double {
}
}

fun easeElasticInOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeElasticInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td2 = t / (d / 2)

if (t == 0.0)
Expand All @@ -186,7 +186,7 @@ fun easeElasticInOut(t: Double, b: Double, c: Double, d: Double): Double {

}

fun easeElasticOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeElasticOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / d
if (t == 0.0)
return b
Expand Down Expand Up @@ -222,9 +222,9 @@ fun easeExpoOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): D

// -- quad

fun easeQuadIn(t: Double, b: Double, c: Double, d: Double): Double = c * (t / d) * (t / d) + b
fun easeQuadIn(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double = c * (t / d) * (t / d) + b

fun easeQuadInOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuadInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / (d / 2)
return if (td < 1) {
c / 2 * td * td + b
Expand All @@ -233,42 +233,42 @@ fun easeQuadInOut(t: Double, b: Double, c: Double, d: Double): Double {
}
}

fun easeQuadOut(t: Double, b: Double, c: Double, d: Double): Double = -c * (t / d) * (t / d - 2) + b
fun easeQuadOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double = -c * (t / d) * (t / d - 2) + b

// -- quart

fun easeQuartIn(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuartIn(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val n = t / d
return c * n * n * n * n + b
}

fun easeQuartInOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuartInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / (d / 2)
val td2 = td - 2.0
return if (td < 1) c / 2 * td * td * td * td + b else -c / 2 * (td2 * td2 * td2 * td2 - 2) + b
}

fun easeQuartOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuartOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / d - 1
return -c * (td * td * td * td - 1) + b
}

// -- quint

fun easeQuintIn(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuintIn(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / d
return c * td * td * td * td * td + b
}

fun easeQuintInOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuintInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val t2 = t * 2.0
val t22 = t2 - 2.0
return if (t < 0.5) 0.5 * t2 * t2 * t2 * t2 * t2 else {
0.5 * (t22 * t22 * t22 * t22 * t22 + 2.0)
}
}

fun easeQuintOut(t: Double, b: Double, c: Double, d: Double): Double {
fun easeQuintOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double {
val td = t / d - 1
return c * ((td) * td * td * td * td + 1) + b
}
Expand All @@ -281,7 +281,7 @@ fun easeSineIn(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Do
fun easeSineOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double =
c * sin(t / d * (PI / 2)) + b

fun easeSineInOut(t: Double, b: Double, c: Double, d: Double): Double =
fun easeSineInOut(t: Double, b: Double = 0.0, c: Double = 1.0, d: Double = 1.0): Double =
-c / 2 * (cos(PI * t / d) - 1) + b


Expand Down
2 changes: 1 addition & 1 deletion orx-jvm/orx-keyframer/src/main/kotlin/Keyframer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ open class Keyframer {
"back-in-out" -> Easing.BackInOut.function
"bounce-in" -> Easing.BounceIn.function
"bounce-out" -> Easing.BounceOut.function
"bounce-in-out" -> Easing.BackInOut.function
"bounce-in-out" -> Easing.BounceInOut.function
"circ-in" -> Easing.CircIn.function
"circ-out" -> Easing.CircOut.function
"circ-in-out" -> Easing.CircInOut.function
Expand Down