Files
orx/orx-delegate-magic/src/jvmDemo/kotlin/DemoSpring01.kt

33 lines
963 B
Kotlin

import org.openrndr.application
import org.openrndr.extra.delegatemagic.dynamics.springForcing
import org.openrndr.extra.delegatemagic.smoothing.smoothing
import kotlin.random.Random
fun main() = application {
program {
val state = object {
var x = width / 2.0
var y = height / 2.0
var radius = 5.0
}
val sx by springForcing(state::x, k = 10.0)
val sy by springForcing(state::y)
val sradius by springForcing(state::radius)
extend {
if (Random.nextDouble() < 0.01) {
state.radius = Random.nextDouble(10.0, 200.0)
}
if (Random.nextDouble() < 0.01) {
state.x = Random.nextDouble(0.0, width.toDouble())
}
if (Random.nextDouble() < 0.01) {
state.y = Random.nextDouble(10.0, height.toDouble())
}
drawer.circle(sx, sy, sradius)
}
}
}