36 lines
1.3 KiB
Kotlin
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)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |