Files
orx/orx-noise/src/jvmDemo/kotlin/DemoFunctionalComposition01.kt
2025-08-30 13:56:01 +02:00

36 lines
1.3 KiB
Kotlin

import org.openrndr.application
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.LineJoin
import org.openrndr.extra.noise.gradient
import org.openrndr.extra.noise.simplex3D
import org.openrndr.extra.noise.withVector2Output
/**
* Demonstrates how to chain methods behind noise functions like `simplex3D` to
* alter its output. By default `simplex3D` produces one double value, but
* by calling `.withVector2Output()` it produces `Vector2` instances instead.
*
* The `.gradient()` method alters the output to return the direction of fastest
* increase. Read more in [WikiPedia](https://en.wikipedia.org/wiki/Gradient).
*/
fun main() = application {
configure {
width = 720
height = 720
}
program {
val n = simplex3D.withVector2Output().gradient()
extend {
drawer.stroke = null
drawer.fill = ColorRGBa.PINK
drawer.lineJoin = LineJoin.ROUND
drawer.stroke = ColorRGBa.WHITE
for (y in 0 until height step 20) {
for (x in 0 until width step 20) {
val d = n(40, x * 0.003, y * 0.003,seconds) * 5.0
drawer.lineSegment(x * 1.0, y * 1.0, x * 1.0 + d.x, y * 1.0 + d.y)
}
}
}
}
}