Demos: ensure all use fun main() = application {

- Adjust some demo window sizes.
- Replace Random.double by Double.uniform
- Tweak some demos so screenshots look more interesting
This commit is contained in:
Abe Pazos
2025-01-26 20:57:04 +01:00
parent 1975a820fc
commit c8f7dd52c6
116 changed files with 2889 additions and 2942 deletions

View File

@@ -118,26 +118,25 @@ Drawing FCurves is useful for debugging, but their typical use is for animation.
The FCurve sampler allows us to query values for the given time value like this:
```kotlin
fun main() {
application {
program {
val xCurve = fcurve(
"""
M320 H0.4
S2,0, 2,320
S2,0, 2,320
S2,0, 2,320
S2,0, 2,320
T0.6,320
""".trimIndent()
).sampler() // <--
extend {
drawer.circle(
xCurve(seconds % 9.0),
height * 0.5,
20.0
)
}
fun main() = application {
program {
val xCurve = fcurve(
"""
M320 H0.4
S2,0, 2,320
S2,0, 2,320
S2,0, 2,320
S2,0, 2,320
T0.6,320
"""
)
val xCurveSampler = xCurve.sampler()
extend {
drawer.circle(
xCurveSampler(seconds % 9.0),
240.0,
20.0
)
}
}
}
@@ -194,6 +193,7 @@ For example `(M0 (h1 m1)[3])[2]` expands to `M0 h1 m1 h1 m1 h1 m1 M0 h1 m1 h1 m1
# References
* https://x.com/ruby0x1/status/1258252352672247814
* https://blender.stackexchange.com/questions/52403/what-is-the-mathematical-basis-for-f-curves/52468#52468
* https://pomax.github.io/bezierinfo/#yforx
@@ -210,6 +210,11 @@ For example `(M0 (h1 m1)[3])[2]` expands to `M0 h1 m1 h1 m1 h1 m1 M0 h1 m1 h1 m1
![DemoFCurve02Kt](https://raw.githubusercontent.com/openrndr/orx/media/orx-fcurve/images/DemoFCurve02Kt.png)
### DemoFCurve03
[source code](src/jvmDemo/kotlin/DemoFCurve03.kt)
![DemoFCurve03Kt](https://raw.githubusercontent.com/openrndr/orx/media/orx-fcurve/images/DemoFCurve03Kt.png)
### DemoFCurveSheet01
[source code](src/jvmDemo/kotlin/DemoFCurveSheet01.kt)

View File

@@ -1,19 +1,17 @@
import org.openrndr.application
import org.openrndr.extra.fcurve.fcurve
fun main() {
application {
configure {
width = 720
height = 720
}
program {
val xpos = fcurve("M0 Q4,360,5,720").sampler()
val ypos = fcurve("M360 h5").sampler()
fun main() = application {
configure {
width = 720
height = 720
}
program {
val xpos = fcurve("M0 Q4,360,5,720").sampler()
val ypos = fcurve("M360 h5").sampler()
extend {
drawer.circle(xpos(seconds.mod(5.0)), ypos(seconds.mod(5.0)), 100.0)
}
extend {
drawer.circle(xpos(seconds.mod(5.0)), ypos(seconds.mod(5.0)), 100.0)
}
}
}
}

View File

@@ -3,26 +3,24 @@ import org.openrndr.color.ColorRGBa
import org.openrndr.extra.fcurve.fcurve
import org.openrndr.math.Vector2
fun main() {
application {
configure {
width = 720
height = 720
}
program {
val xposCurve = fcurve("M0 Q4,360,5,720")
val xpos = xposCurve.sampler()
val yposCurve = fcurve("M360 h5")
val ypos = yposCurve.sampler()
fun main() = application {
configure {
width = 720
height = 720
}
program {
val xposCurve = fcurve("M0 Q4,360,5,720")
val xpos = xposCurve.sampler()
val yposCurve = fcurve("M360 h5")
val ypos = yposCurve.sampler()
extend {
drawer.circle(xpos(seconds.mod(5.0)), ypos(seconds.mod(5.0)), 100.0)
drawer.stroke = ColorRGBa.PINK
drawer.contours(xposCurve.contours(Vector2(720.0 / 5.0, -1.0), Vector2(0.0, height * 1.0)))
drawer.contours(yposCurve.contours(Vector2(720.0 / 5.0, -1.0), Vector2(0.0, height * 1.0)))
drawer.translate(seconds.mod(5.0)*(720.0/5.0), 0.0)
drawer.lineSegment(0.0, 0.0, 0.0, 720.0)
}
extend {
drawer.circle(xpos(seconds.mod(5.0)), ypos(seconds.mod(5.0)), 100.0)
drawer.stroke = ColorRGBa.PINK
drawer.contours(xposCurve.contours(Vector2(720.0 / 5.0, -1.0), Vector2(0.0, height * 1.0)))
drawer.contours(yposCurve.contours(Vector2(720.0 / 5.0, -1.0), Vector2(0.0, height * 1.0)))
drawer.translate(seconds.mod(5.0) * (720.0 / 5.0), 0.0)
drawer.lineSegment(0.0, 0.0, 0.0, 720.0)
}
}
}
}

View File

@@ -3,26 +3,26 @@ import org.openrndr.extra.fcurve.MultiFCurve
import org.openrndr.extra.fcurve.fcurve
import org.openrndr.extra.fcurve.vector2
fun main() {
application {
configure {
width = 720
height = 720
}
program {
class XYAnimation : MultiFCurve(mapOf(
fun main() = application {
configure {
width = 720
height = 720
}
program {
class XYAnimation : MultiFCurve(
mapOf(
"x" to fcurve("M0 Q4,360,5,720"),
"y" to fcurve("M360 h5")
)) {
val position = vector2("x", "y")
}
)
) {
val position = vector2("x", "y")
}
val xyAnimation = XYAnimation()
val position = xyAnimation.position.sampler()
val xyAnimation = XYAnimation()
val position = xyAnimation.position.sampler()
extend {
drawer.circle(position(seconds.mod(5.0)), 100.0)
}
extend {
drawer.circle(position(seconds.mod(5.0)), 100.0)
}
}
}
}